新手,帮忙看看链表哪里出错了,C语言写的
刚学C语言,路过大侠能不能帮忙看下哪里错了;
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
/*______定义一个链表的结构体_________________*/
/*typedef*/ struct Node
{
int data; /*链表的数据域*/
struct Node * pNext; /*链表指针域;指向链表下一个节点的指针*/
}NODE, * PNODE; /*NODE等价于struct Node; PNODE等价于struct Node *数据类型*/
/*________函数声明_________________________*/
PNODE create_list(void) ;
/*_______________主函数____________________*/
int main(void)
{
PNODE pHead = NULL; /*定于结构体数据类型的头指针*/
pHead = create_list(); /*调用create_list函数,功能是创建一个非循环单链表*/
return 0;
}
/*____创建链表的函数_________________________*/
PNODE create_list(void) /*函数的返回值为PNODE(即struct Node *)类型*/
{
int len; /*定义链表值变量*/
int i; /*定义循环变量*/
int val;
PNODE pHead = (PNODE) malloc(sizeof(NODE)); //一直指这行出错;然后下面都错;
if(NULL == pHead)
{
printf("分配失败,程序终止!\n");
exit(-1);
}
PNODE pTail =pHead;
pTail->PNext =NULL;
printf("你用户输入需要生成的链表节点的个数,len = ");
scanf("%d", &len);
for(i = 0; i<len; ++i)
{
printf("请输入第%d个节点的个数: ", i+1);
scanf("%d",&val);
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL ==pNew)
{
printf("分配失败,程序终止!\n");
exit(-1);
}
pNew->data = val;
pTail->pNext = pNew;
pNew->pNext= NULL;
pTail = pNew;
}
return pHead;
}
[解决办法]
- C/C++ code
/*typedef*/ struct Node
[解决办法]
- C/C++ code
#include <stdio.h>#include <malloc.h>#include <stdlib.h>/*______定义一个链表的结构体_________________*/typedef struct Node //#####################1{ int data; /*链表的数据域*/ struct Node * pNext; /*链表指针域;指向链表下一个节点的指针*/}NODE,* PNODE; /*NODE等价于struct Node; PNODE等价于struct Node *数据类型*//*________函数声明_________________________*/PNODE create_list(void) ;/*_______________主函数____________________*/int main(void){ PNODE pHead = NULL; /*定于结构体数据类型的头指针*/ pHead = create_list(); /*调用create_list函数,功能是创建一个非循环单链表*/ return 0;}/*____创建链表的函数_________________________*/PNODE create_list(void) /*函数的返回值为PNODE(即struct Node *)类型*/ { int len; /*定义链表值变量*/ int i; /*定义循环变量*/ int val; PNODE pHead = (PNODE) malloc(sizeof(NODE)); //一直指这行出错;然后下面都错; if(NULL == pHead) { printf("分配失败,程序终止!\n"); exit(-1); } PNODE pTail =pHead; pTail->pNext =NULL; //#####################2 printf("你用户输入需要生成的链表节点的个数,len = "); scanf("%d", &len); for(i = 0; i<len; ++i) { printf("请输入第%d个节点的个数: ", i+1); scanf("%d",&val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(NULL ==pNew) { printf("分配失败,程序终止!\n"); exit(-1); } pNew->data = val; pTail->pNext = pNew; pNew->pNext= NULL; pTail = pNew; } return pHead;}
[解决办法]
程序没运行过 不过一眼都看出这个地方有错 你把typedef 注释掉后PNODE就是个指针变量了 怎么还能用它去充当类型啊
[解决办法]
这是我改能运行以后的:
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
/*______定义一个链表的结构体_________________*/
typedef struct Node
{
int data; /*链表的数据域*/
struct Node *pNext; /*链表指针域;指向链表下一个节点的指针*/
}NODE, * PNODE; /*NODE等价于struct Node; PNODE等价于struct Node *数据类型*/
/*________函数声明_________________________*/
PNODE create_list(void) ;
/*_______________主函数____________________*/
int main(void)
{
PNODE pHead = NULL; /*定于结构体数据类型的头指针*/
pHead = create_list(); /*调用create_list函数,功能是创建一个非循环单链表*/
return 0;
}
/*____创建链表的函数_________________________*/
PNODE create_list(void) /*函数的返回值为PNODE(即struct Node *)类型*/
{
int len; /*定义链表值变量*/
int i; /*定义循环变量*/
int val;
PNODE pHead = (PNODE) malloc(sizeof(NODE)); //一直指这行出错;然后下面都错;
if(NULL == pHead)
{
printf("分配失败,程序终止!\n");
exit(-1);
}
PNODE pTail = pHead;
pTail->pNext =NULL; //pTail->PNext =NULL;注意大小写啊
printf("你用户输入需要生成的链表节点的个数,len = ");
scanf("%d", &len);
for(i = 0; i<len; ++i)
{
printf("请输入第%d个节点的个数: ", i+1);
scanf("%d",&val);
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL ==pNew)
{
printf("分配失败,程序终止!\n");
exit(-1);
}
pNew->data = val;
pTail->pNext = pNew;
pNew->pNext= NULL;
pTail = pNew;
}
return pHead;
}
主要错误:
1、typedef不能注释
2、注意大小写,我已经在程序中注明
声明:我只是改了编译错误,并没有检查运行时错误。