|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# 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 ;
- }
复制代码
|
|