-2
我正在爲數據結構類做一個簡單的鏈接列表,並且無法理解頭指針應該如何工作。鏈接列表頭C++
我
template <typename E>
class SSLL{
template<typename E>
struct Node {
E data;
Node* next;
};
public:
template <typename E>
SSLL();
void push_front(E element);
private:
Node<E> * head;
Node<E> * tail;
};
template <typename E>
SSLL<E>::SSLL() {
head = NULL;
tail = NULL;
}
template <typename E>
void SSLL<E>::push_front(E element) {
Node<E> * n = new Node<E>;
n->data = element;
n->next = head;
head = n;
if (!tail) {
tail = n;
}
}
然而,並不本作頭的第一個元素的列表,而不是一個指向第一個元素。
我試圖改變push_front(E元素),但我得到空指針錯誤。
template <typename E>
void SSLL<E>::push_front(E element) {
Node<E> * n = new Node<E>;
n->data = element;
n->next = head->next;
head->next = n;
if (!tail) {
tail->next = n;
}
}
所有的例子我在網上找有頭= n,但我仍然無法理解爲什麼它是這樣的,而不是頭戴式>未來= N。
謝謝。
看起來你需要用調試器逐行掃描你的代碼一行一行地得到一個gras發生了什麼事情。 – user0042
調試鏈表的另一個好工具是筆和紙。我沒有騙你。畫吸盤。在節點中繪製。一次更改一次,將列表重新配置到列表應該在操作之後的新配置中。比較你所做的事情,以便將列表轉換可視化爲您在代碼中執行的操作,並相應地調整代碼。 – user4581301
太好了。這比較容易閱讀。問問你自己,當'head'是'NULL'時,在第一次插入到列表中的時候'head-> next'會發生什麼? – user4581301