程序无法输出
# include <stdio.h># include <malloc.h>
# include <stdlib.h>
#define LEN sizeof(struct Node)
typedef struct Node
{
int data;
struct Node * pNext;
}NODE, *PNODE;
PNODE create_list(void);
void traverse_list(PNODE);
int main(void)
{
PNODE pHead = NULL;
pHead = create_list();
traverse_list(pHead);
return 0;
}
PNODE create_list(void)
{
int i, len, val;
PNODE pHead = (PNODE) malloc( LEN);
if (pHead == NULL)
{
printf("内存分配失败,程序终止!");
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( LEN);
if (pNew == NULL)
{
printf("内存分配失败,程序终止!");
exit(-1);
}
pNew->data = val;
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;
}
return pHead;
}
void traverse_list(PNODE pHead)
{
PNODE p = pHead->pNext;
while (p != NULL);
{
printf("%d\n", p->data);
p = p->pNext;
}
printf("\n");
return ;
}
编译没有问题,但是不会输出;不知道什么问题;
本帖最后由 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 ;
} jackz007 发表于 2019-11-20 16:34
void traverse_list(PNODE pHead)
. . . . . .
while (p != NULL);
十分感谢;大神的指导;开始是把while放循环后面的;后面改放前面了,就忘了分号了;
页:
[1]