我需要做一个简单的链接列表程序,但我的代码就停止运行了。下面是代码,第一个是主.cpp文件,第二个是定义问题函数的头。代码在分配 "new_"指针属性(用箭头标记)时停止。这个函数,正如它的名字一样,需要从一个数组中生成一个链接列表,并返回该列表的头部。我使用dev c++进行编译,他没有抛出任何错误或警告。
<main.cpp>
#include<stdio.h>
#include"LinkedList2.h"
int main(){
node *head;
int A[] = {2,8,12,9,7};
int n = sizeof(A) / sizeof(A[0]);
head = CreateListFromArray(A, n);
PrintList(head);
return 0;
}
<LinkedList2.h>
#include<stdio.h>
typedef struct node_{
int x;
struct node_ *next;
}node;
node* CreateListFromArray(int A[], int n){
node *head = NULL, *tmp = head, *new_;
for(int i = 0; i < n; i++){
new_->next = NULL; // <------
new_->x = A[I]; // <------
tmp->next = new_;
tmp = tmp->next;
}
return head;
}
void PrintList(node *head){
for(node *tmp = head; tmp != NULL; tmp = tmp->next) printf("%d ", tmp->x);
}
你需要为每个新节点分配内存
node* CreateListFromArray(int A[], int n){
node *head = NULL, *tmp = head;
for(int i = 0; i < n; i++){
node *new_ = new node():
new_->next = NULL; // <------
new_->x = A[I]; // <------
tmp->next = new_;
tmp = tmp->next;
}
return head;
}
你也没有一个有效的头部指针,我让你自己去解决。
注意在C++中,你不再需要typedef了,你还得把A[I]改成A[i],因为I不存在。
你还得把A[I]改成A[i],因为I并不存在。