2017-03-15 11 views
0

私のプログラムは、頭を挿入した後に尾を挿入した後にクラッシュし、それ以外の場合は動作するようです。私はそれを把握できません。そうでない場合は、ここの部分に残っている要素を追加した後にリンクリストプログラムがクラッシュする

struct Node { 
    int key; 
    Node *next; 
}; 

struct List { 
    Node *head, *tail; 
}; 

void init(List& l) { 
    l.head = l.tail = NULL; 
} 

void insertHead(List& l, int x) { 
    Node *temp=new Node; 
    temp->next=NULL; 
    temp->key=x; 
    temp->next=l.head; 
    l.head=temp; 
} 

void insertTail(List& l, int x) { 
    Node *temp=new Node; 
    temp->key=x; 
    temp->next=NULL; 
    if(l.head==NULL) { 
     l.head = temp; 
     l.tail = temp; 
    } else { 
     l.tail->next=temp; 
     l.tail=temp; 
    } 
} 

ザッツだけ私のコードの一部が、私はそれが十分になると思う、http://pastebin.com/WxmYJ0uEあなたがリストの最初の要素を挿入してたときに尻尾を設定するのを忘れ

+0

エラーは残りの部分にあり、それをすばやく見て、まだ見つからなかったようです。しかし、あなたのコードには、上記のinsertHeadの 'temp-> next = NULL;'のようなコードに多くのノイズがありますので、コードを修正してみてください。コード。 – Klaus

+0

空のリスト、insertHead、insertTailでテストを行います。デバッガで実行します。 –

答えて

2

void insertHead(List& l, int x) { 
    Node *temp=new Node; 
    temp->next=NULL; 
    temp->key=x; 
    temp->next=l.head; 
    l.head=temp; 

    if(l.tail == NULL) l.tail = l.head; // <-- you forgot this 
} 
関連する問題