我想基於鏈接列表在C++中實現隊列容器。我使用相同的結構來實現堆棧,它工作正常。使用C++中的鏈接列表實現隊列實現
但現在我havet與方法「排隊」的麻煩。我不明白究竟是什麼問題,但我知道指針是我的弱點。
#include <iostream>
template <class N>
class node {
public:
N data;
node* next;
};
template <class Q>
class my_queue {
protected:
node<Q>* m_head;
unsigned int m_size;
public:
my_queue() {
m_head = NULL;
m_size = 0;
}
void enqueue(Q value) {
node<Q>* newel = new node<Q>; // creating the new element
node<Q>* last = m_head; // find the last element in the queue
while(last != NULL) {
last = last->next;
}
newel->data = value;
newel->next = last->next;
last->next = newel;
m_size++;
}
void print() {
node<Q>* element = m_head; // element == each element in the list
while(element != NULL) {
std::cout << element->data << std::endl;
element = element->next;
}
}
};
如果我編譯這個用:
main() {
my_queue<int> q;
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue(4);
q.enqueue(5);
q.print();
return 0;
}
我沒有錯誤,但是當我運行它,我得到「段錯誤」。
當您插入第一個元素,'last'會'm_head',這是從來沒有分配,所以你不能做最後所'>未來= newel'。 – Polb
謝謝你是解決方案的一部分! – vgratian