本帖最后由 jackz007 于 2019-11-20 16:39 编辑
void traverse_list(PNODE pHead)
. . . . . .
while (p != NULL);
问题就是 while 语句后面多写了一个分号,把它删掉就好了。
楼主的代码首节点无用,我改写了一下,稍微节省一点空间:#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct Node
{
int data ;
struct Node * pNext ;
}NODE , * PNODE ;
PNODE create_list(void)
{
int i , len , val ;
PNODE pHead , p , q ;
pHead = NULL ;
printf("请你输入需要生产链表节点的个数:") ;
scanf("%d", & len) ;
if(len > 0) {
for(i = 0 ; i < len ; i ++) {
printf("请你输入第%d个节点的值: ", i + 1) ;
scanf("%d" , & val) ;
if ((p = (PNODE) malloc(sizeof(struct Node)))) {
p -> data = val ;
p -> pNext = NULL ;
if(! i) pHead = p ;
else q -> pNext = p ;
q = p ;
} else {
fprintf(stderr , "\n") ;
fprintf(stderr , "Error:malloc()\n") ;
fprintf(stderr , "\n") ;
break ;
}
}
}
return pHead ;
}
void traverse_list(PNODE pHead)
{
PNODE p ;
for(p = pHead ; p ; p = p -> pNext) printf("%d\n" , p -> data) ;
printf("\n") ;
}
int main(void)
{
PNODE pHead = NULL ;
pHead = create_list() ;
traverse_list(pHead) ;
return 0 ;
}
|