链表中的运行时错误

时间:2016-02-11 05:22:59

标签: c++11

#include <iostream>
using namespace std;
struct Node{
int data;
Node* next;
};
void deletelist(Node*&head)
{
Node* temp=new Node;
temp=head;
while(head!=NULL)
{
head=head->next;
delete(temp);
temp=head;
}
}
int main() {
Node aman={1,NULL},manjot={2,&aman},sima={3,&manjot},jasbir={4,&sima};
Node* head=&jasbir;
deletelist(head);
return 0;
}

为什么显示运行时错误(删除(temp);函数在这里不起作用,但为什么)?

1 个答案:

答案 0 :(得分:-1)

为您准备工作代码。请特别注意main中的两个范围。

#include <iostream>
using namespace std;
struct Node{
int data;
Node* next;
};
void print(Node*head)
{
while(head!=NULL)
{
    std::cout<<head->data<<'\n';
    head=head->next;
}
}
int main() {
    Node* head;
    {
        Node aman={1,NULL},manjot={2,&aman},sima={3,&manjot},jasbir={4,&sima};
        head=&jasbir;
        print(head);
    }
    {
        Node aman={10,NULL},manjot={20,&aman},sima={30,&manjot},jasbir={40,&sima};
        head=&jasbir;
        print(head);
    }
return 0;
}

example on coliru