2016-06-19 4 views
0

Я ве написал программу на C++ для вставки в отсортированном связанный список - выдает ошибку: Процесс завершается со статусом -1073741510
я использовал двойные указатели здесь, чтобы получить доступ к головному узлу.
NO другие ошибки в программеПроцесс завершается со статусом -1073741510

#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

Такой код стиля С. Вы теряете память в каждом слоте с помощью узла * prev = new node; и не использовать его. Однако он работает для меня без сбоев. – KIIV

+0

@KIIV Чтобы сохранить предыдущий узел, нет никакого другого пути? –

+0

Вы имеете в виду что-то вроде этого: http://cpp.sh/56sv? Но в C++ обычно используется «контейнерный класс», инкапсулирующий весь интерфейс. Нет процедурного программирования C-стиля, подобного этому ... – KIIV

ответ

0

Вы ошибку в if (head == NULL) она должна быть if (*head == NULL) в голове не должно быть пустым вообще. Но это не должно приводить к прекращению процесса.

+0

Спасибо @KIIV !! –

Смежные вопросы