2015-09-27 93 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)到隊列的前面。

相關問題