2016-06-19 1 views
0

で終了 - エラーを与える:プロセスは、私はヘッドノードにアクセスするために、ここで、二重のポインタを使用している状態-1073741510
で終了します。
プログラム内の他のエラープロセスは、ステータス-1073741510私がソートされたリンクリスト</strong>に<strong>インサートにC++プログラムを書かれまし

#include<iostream> 
using namespace std; 
struct node 
{ 
    int data; 
    struct node* next;  
}; 
void ins(int d,node** head) 
{ 
    node* temp=new node; 
    node* prev=new node; 
    temp->next=NULL; 
    temp->data=d; 
    if(head==NULL) 
    { 
     *head=temp; 
    } 
    else 
    { 
     node* ptr=*head; 
     while(ptr!=NULL && ptr->data<d) 
     { prev=ptr; 
      ptr=ptr->next; 
     } 
     prev->next=temp; 
     temp->next=ptr;  
    } 
} 
void print(node* head) 
{ 
    node* ptr=head;int i=0; 
    while(ptr!=NULL) 
    { 
    cout<<i<<" "<<ptr->data<<" "; 
    i++; 
    ptr=ptr->next; 
    } 
} 
int main() 
{ 
node* head=NULL; 
ins(4,&head); 
ins(10,&head); 
ins(9,&head); 
print(head); 
return 0; 
}` 
+0

このようなCスタイルのコード。あなたはノードごとにメモリを失っています* prev = new node;それを使用しないよりも。しかし、それはクラッシュなしで私のために働いています。 – KIIV

+0

@ KIIV前のノードを保存するには、他の方法はありませんか? –

+0

あなたは次のようなものを意味します:http://cpp.sh/56sv?しかし、C++には、通常、インタフェース全体をカプセル化する "コンテナクラス"が使用されています。このようなCスタイルの手続き型プログラミングはありません... – KIIV

答えて

0

あなたは頭がまったくnullにすべきではないとして、それはif (*head == NULL)あるべきif (head == NULL)に間違いがあります。しかし、これはプロセスの終了を引き起こすべきではありません。

+0

ありがとう@KIIV !! –

関連する問題