包含节点的简单C编程代码运行,但在代码块上创建错误
//该程序创建一个结构节点,其中包含两个指针变量、一个机场和到另一个节点的链接。它只是连接多伦多、迈阿密和波士顿机场,并通过一个while循环打印出来。代码可以工作,但我得到point.exe停止工作。我拍了一张照片包含节点的简单C编程代码运行,但在代码块上创建错误,c,nodes,codeblocks,C,Nodes,Codeblocks,//该程序创建一个结构节点,其中包含两个指针变量、一个机场和到另一个节点的链接。它只是连接多伦多、迈阿密和波士顿机场,并通过一个while循环打印出来。代码可以工作,但我得到point.exe停止工作。我拍了一张照片 #包括 #包括 #包括 类型定义结构节点{ char*机场[4]; 结构节点*链接; }诺德斯; int main(){ nodez*J,*K; J=malloc(sizeof(nodez)); 如果(J==NULL){ 返回1; } strcpy(J->机场,“TOR”); J-
#包括
#包括
#包括
类型定义结构节点{
char*机场[4];
结构节点*链接;
}诺德斯;
int main(){
nodez*J,*K;
J=malloc(sizeof(nodez));
如果(J==NULL){
返回1;
}
strcpy(J->机场,“TOR”);
J->LINK=malloc(sizeof(nodez));
如果(J->LINK==NULL){
返回1;
}
strcpy(J->LINK->AIRPORT,“MIA”);
J->LINK->LINK=malloc(sizeof(nodez));
如果(J->LINK->LINK==NULL){
返回1;
}
strcpy(J->LINK->LINK->AIRPORT,“BOS”);
nodez*电流=J;
while(当前){
printf(“%s\n”,当前->机场);
当前=当前->链接;
}
返回0;
}
下面是我得到的图片nodez结构的
AIRPORT
成员应定义为char AIRPORT[4]
,按照当前的定义,它是一个由4个指针组成的数组,指向char
。编译器生成不应忽略的警告
此外,您构建了一个链接节点列表,但忘记了将最后一个节点的链接设置为NULL
malloc()
通过设置J->LINK->LINK->LINK=NULL来修复最后一个strcpy()
strcpy(J->AIRPORT,“TOR”)
-J->AIRPORT
不是char
数组。这需要char*AIRPORT[4]代码>-->char机场[4]代码>但在追踪链接时也要非常小心。在链表中,您应该在继续运行之前检查每个链接指针。而且格式不正确的代码很难阅读。请告诉我格式设置是因为这里的界面有问题,而不是您如何设置if
语句的格式。另外,您应该将BOS
之后的节点设置为null
或0
您应该明确了解如何使用调试器来调查正在发生的事情。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node{
char * AIRPORT[4];
struct node * LINK;
} nodez;
int main (){
nodez *J,*K;
J = malloc(sizeof(nodez));
if (J == NULL){
return 1;
}
strcpy(J->AIRPORT, "TOR");
J->LINK = malloc(sizeof(nodez));
if (J -> LINK == NULL){
return 1;
}
strcpy(J->LINK->AIRPORT, "MIA");
J->LINK->LINK = malloc(sizeof(nodez));
if (J -> LINK -> LINK == NULL){
return 1;
}
strcpy(J->LINK-> LINK -> AIRPORT, "BOS");
nodez *current = J;
while (current){
printf("%s\n", current -> AIRPORT);
current = current -> LINK;
}
return 0;
}