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