首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

生手,帮忙看看链表哪里出错了,C语言写的

2012-09-16 
新手,帮忙看看链表哪里出错了,C语言写的刚学C语言,路过大侠能不能帮忙看下哪里错了;# include stdio.h#

新手,帮忙看看链表哪里出错了,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、注意大小写,我已经在程序中注明
声明:我只是改了编译错误,并没有检查运行时错误。

热点排行