以下C ++代码引发了分段错误错误。当只创建一个链表并显示时,所有工作文件。但在引入第二个列表后会导致错误。 这里的目标是创建和显示两个链接列表。
#include<iostream>
using namespace std;
struct node {
int value;
node* link;
};
void insert_into_list(node** head, int value) {
node* temp = new node;
temp->value = value;
temp->link = (*head);
(*head) = temp;
}
void display_link(node* he) {
cout << "Link List:\n";
node* head = he;
while (head != NULL) {
cout << head->value;
if (head->link != NULL)
cout << "->";
head = head->link;
}
cout << endl;
}
int main() {
node* head1;
node* sec;
insert_into_list(&head1, 9);
insert_into_list(&head1, 7);
insert_into_list(&head1, 6);
display_link(head1);
cout<<"LKL"<<endl;
insert_into_list(&sec, 8);
insert_into_list(&sec, 6);
insert_into_list(&sec, 7);
display_link(sec);
}
答案 0 :(得分:2)
您的程序有未定义的行为,因为变量
node* head1;
node* sec;
未初始化。
改为使用
node* head1 = 0;
node* sec = 0;
答案 1 :(得分:-3)
这对head1
有用。
你应该给你的清单一个正确的结局。
node* head1 = 0;
如果您为node
提供了构造函数,例如
node(int value, node* next);