2015-09-27 40 views
0

我被要求编写一个使用循环链接的节点链来表示队列中的元素的基于链接的实现。C++一个带有一个外部指针的链接节点的循环链

另外,只使用单一的尾指针像这样: Figure 14-3

,我所面临的问题是,我不能背面节点指针连接到第一,因为我只允许使用一个单一的尾指针。

我使用的类:

#include "Queue.h" 
#include "Node.h" 

template<class T> 
class CircularLinkedQueue : public Queue<T> { 
private: 
    Node<T>* back; 
    int length; 
public: 
    CircularLinkedQueue(); 
    virtual ~CircularLinkedQueue(); 

    bool isEmpty() const; 
    bool enqueue(T* element); 
    T* dequeue(); 
    T* peek() const; 
}; 

我有麻烦的代码行:

back->setNext(??);  // How do I connect it to the front? 

请帮我指出了正确的方向,我一直在寻找周围的东西相似但我找不到任何东西。 谢谢!

回答

0

每当你在列表的末尾添加一个节点只是点,为第一个节点本身如

T* enqueue(T* element){ 
if(Queue == NULL){ 
element.setNext(element); 
return element;} 
T* cur=queue; 
while(cur->next != queue)cur=cur->next; 
cur->next=element; 
element->next=queue; 
return queue;} 

基本上代码的作用是什么,而进入它改变的指针的新元素只是添加元素以指向作为根元素的队列的开始请注意,我从后面插入元素

+0

我相信你误解了我的问题。我正在处理的只是一个节点,它放在后面的原因是,所以我不必遍历链表来到达前面。后面必须简单地将(setNext())指向前面,没有迭代器,也没有额外的外部指针。 – mark

0

在带有单个外部指针指向队列后部的循环链接队列中,每个节点在队列中应该有一个数据组件和一个下一个组件。

将单个外部指针指向队列尾部的好处是可以即时访问队列尾部和队列前部。

要访问队列的前端,请使用外部指针访问后端节点的“下一个”组件。像这样:nodePtr front = back-> next;

现在你有一个外部指针(nodePtr)到队列的前面。

相关问题