-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要素)をこれに変更しようとしましたが、nullポインタエラーが発生しました。
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個のものと同様である理由を理解悩みを持ってオンラインで見つけるすべての例。
ありがとうございます。
グラスを取得するには、デバッガを1行ずつ実行する必要がありますp何が起こっているか。 – user0042
リンクされたリストをデバッグするためのもう1つのすばらしいツールは、ペンとペーパーです。私はあなたがいない。吸盤を描く。ノードを描画します。一度に1つずつ変更すると、リストを操作後に新しい設定に再構成します。あなたがコード内で行っていることへのリストの変換を視覚化し、それに応じてコードを調整するために行ったことを比較してください。 – user4581301
それは読むのがはるかに簡単です。 'head'が' NULL'のときにリストに最初に挿入されたときに 'head-> next'がどうなるか自問してください。 – user4581301