2017-07-28 49 views
-3

我有一個家庭作業,我需要建立自己的隊列。我上一次家庭作業涉及建立一個鏈表。隊列是否只包含有限操作的鏈表?

是隊列無非鏈表只能添加到前面,並刪除結束嗎?我可以複製並粘貼鏈接列表代碼並刪除除此之外的所有額外功能嗎?

我看着排隊的文檔,我看到一些特定的功能,如輸出前/後,我還增加了隊列的,但我幾乎完成了通過使鏈表較早分配?

+0

隊列是**抽象**,有多種方式可以實現它。在C++標準庫中,有一個['queue'](http://en.cppreference.com/w/cpp/container/queue)適配器,默認情況下它構建在['deque']( http://en.cppreference.com/w/cpp/container/deque),這是[基於塊](https://stackoverflow.com/q/6292332/1171191)數據結構,某種混合一個向量和一個鏈表。當你只在末端執行操作時,這比鏈表更有效率,但鏈表可以正常工作。 – BoBTFish

+0

請在發佈問題前做一些研究。 [這](https://en.wikipedia.org/wiki/Queue_(abstract_data_type))是谷歌的第一個結果,通過搜索發現*隊列是如何實現的* – NathanOliver

+0

隊列是一個數據結構,它有一定的語義是不同於鏈表列表語義的。儘管可以使用鏈表或數組或其他方法實現隊列。所以,請閱讀你班上的相應材料,或者至少google一下。 – Serge

回答

0

從我的數據結構類中,我記得隊列是一個抽象數據類型(ADT),這意味着它描述了結構應該做什麼,而鏈接列表是ADT的實現,使用ADT。 在代碼中,這兩個術語有時可互換使用,或有時一個隊列是隻是其中從一端插入,而從另一除去一個鏈表。

1

here

隊列是一個FIFO(先入先出)列表,列表狀結構 提供給它的元件的受限接入:元素可能僅 插入在回來並從前面移開。與堆棧類似, 隊列比列表更不靈活。

所以,是的,你是(幾乎)的權利。隊列可以使用鏈接列表作爲其基礎數據容器。但是,請注意,隊列可以使用std::vector(可能不是最好的主意)或者完全不同的存儲其數據的東西。無論如何,因爲你已經有一個鏈表可能是一個不錯的選擇。

不要複製粘貼任何代碼!重複的代碼總是不好的。如果你想改變鏈表實現的東西,你必須在兩個地方完成。隨着隊列限制訪問它的元素它也許是最容易實現的是這樣的:

class MyQueue { 
    MyLinkedList data; 
public: 
    pop_front(); 
    push_back(); 
    // ...etc... 
}; 
+1

該OP是不正確的。鏈表是一個可能的隊列實現,它不能被認爲是一個隊列。 –

+0

@FantasticMrFox其實你是對的。我認爲OP意味着正確的事情,但從字面上看它是錯誤的。我將編輯... – user463035818

0

有不同的是實現一個隊列(它是一個抽象數據類型),使用鏈表,陣列,兩個棧,並其他。你的鏈表提供了你需要擁有一個合適的隊列的許多功能,所以是的,你的隊列實現將與你的鏈表非常相似。考慮以下一些常見的隊列命名約定,例如enQueue(添加元素),deQueue(移除元素),isEmpty或找到對您有意義的其他隊列。