我正在尝试实现链接列表数组。我面临的问题是,当我使用for循环进行遍历时,代码会抛出运行时错误。任何人都可以解释为什么会发生这种情况和可能的建议 //创建链接列表数组的程序。
#include <iostream>
using namespace std;
struct Node{
int val;
Node *next;
};
struct Node* insertFirst(struct Node *head, int data){
struct Node *temp = new Node;
temp->val = data;
temp->next = NULL;
if(head == NULL){
head = temp;
return head;
}
temp->next=head;
return temp;
}
void traverse(struct Node* head){
struct Node *list = head;
if(list == NULL)
cout<<"List is empty";
else{
while(list){
cout<<list->val<<",";
list = list->next;
}
}
cout<<endl;
}
int main(){
struct Node* array[3];
array[0] = insertFirst(array[0],30);
array[0] = insertFirst(array[0],20);
array[0] = insertFirst(array[0],10);
array[1] = insertFirst(array[1],60);
array[1] = insertFirst(array[1],50);
array[1] = insertFirst(array[1],40);
array[2] = insertFirst(array[2],90);
array[2] = insertFirst(array[2],80);
array[2] = insertFirst(array[2],70);
// Traversal works
/*traverse(array[0]);
traverse(array[1]);
traverse(array[2]);*/
// Traversal throws run time error.
for(int i=0; i<3; i++){
traverse(array[i]);
}
return 0;
}
答案 0 :(得分:5)
问题是局部变量(如main
函数中的数组)未初始化,因此它们的值是不确定的(即随机)。所以当你这样做时
array[0] = insertFirst(array[0],30);
将非空值传递给函数并使用它,导致未定义的行为。