为什么我的代码在指针方面停止运行?



我需要制作一个简单的带有链表的程序,但我的代码停止运行。 下面是代码,第一个是主.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],因为我不存在

相关内容

  • 没有找到相关文章

最新更新