試圖設計一個簡單的鏈接列表。節點聲明爲:指針,自定義類,段錯誤11s
class Node
{
public:
friend class CRevList;
Node() {m_next = 0; m_prev = 0;}
Node(const T &t) {m_payload = t; m_next = 0; m_prev = 0;}
T Data() {return m_payload;}
const T Data() const { return m_payload; }
private:
Node *m_next;
Node *m_prev;
T m_payload;
};
因此,m_next指向列表中的下一個項目,並且m_payload保存其值。 m_head被聲明爲這樣:
private:
Node m_head; // Head node
不完整的功能把一個新節點在列表的前面與有效載荷噸:
void PushFront(const T &t)
{
Node *newnode = Node(t);
m_head.m_next = newnode;
}
上面應該聲明的新節點與t的有效載荷,並將m_head的下一個節點設置爲新節點。我還沒有將它鏈接到列表的其餘部分,只想得到至少1個節點的工作。
int GetFirst() //get value of first item in list.
{
Node *firstnode = m_head.m_next;
int payload = firstnode->m_payload;
return payload; //m_head.m_next->m_payload;
}
這是試圖讓列表中的第一個節點,獲取它的有效載荷,並返回...這給出了一個Seg Fault 11錯誤。
我很確定這是一個問題,我是如何做指針的,我對它們有一個大體的瞭解,但是在閱讀文檔時我仍然不確定如何處理錯誤。
謝謝!
_'Node * newnode = Node(t);'_這是否會編譯? –
是的,它編譯。它有什麼問題嗎? – redux
你能把你的例子放在Ideone上,以證明它編譯好嗎? –