m0_64414562 2022-11-24 20:16 采纳率: 0%
浏览 11

这个链表的输出为什么是无限循环?


#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct Node
{
    int data;
    struct Node* pNext;
}*PNode,Node;
PNode creat_list(void);
void show_list(PNode pHead);
int main(void)
{
    PNode pHead=NULL;
    pHead=creat_list();
    show_list(pHead);
    return 0;
}
PNode creat_list(void)
{
    int i;
    int len;//链表长度
    int val;//链表里的值
    PNode pHead=(PNode)malloc(sizeof(Node));
    if(pHead==NULL)
    {
        printf("No");
        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(pNew==NULL)
        {
            printf("No");
            exit(-1);
        }
        pNew->data=val;
        pTail->pNext=pNew;
        pNew->pNext==NULL;
        pTail=pNew;//尾插法
    }
    return pHead;
}
void show_list(PNode pHead)
{
    PNode p=pHead->pNext;
    while(NULL!=p)
    {
        printf("%d ",p->data);
        p=p->pNext;
    }
    printf("\n");
    return 0;
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-11-24 20:37
    关注

    改动处见注释,供参考:

    #include <stdio.h>
    #include <stdlib.h>
    //#include
    typedef struct Node
    {
        int    data;
        struct Node* pNext;
    }*PNode,Node;
    PNode creat_list(void);
    void show_list(PNode pHead);
    int main(void)
    {
        PNode pHead=NULL;
        pHead=creat_list();
        show_list(pHead);
        return 0;
    }
    PNode creat_list(void)
    {
        int i;
        int len;//链表长度
        int val;//链表里的值
        PNode pHead=(PNode)malloc(sizeof(Node));
        if(pHead==NULL)
        {
            printf("No");
            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(pNew==NULL)
            {
                printf("No");
                exit(-1);
            }
            pNew->data=val;
            pTail->pNext=pNew;
            pNew->pNext=NULL;  //pNew->pNext==NULL; 修改
            pTail=pNew;//尾插法
        }
        return pHead;
    }
    void show_list(PNode pHead)
    {
        PNode p=pHead->pNext;
        while(NULL!=p)
        {
            printf("%d ",p->data);
            p=p->pNext;
        }
        printf("\n");
        return;       //return 0;   修改
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月24日

悬赏问题

  • ¥15 想用@vueuse 把项目动态改成深色主题,localStorge里面的vueuse-color-scheme一开始就给我改成了dark,不知道什么原因(相关搜索:背景颜色)
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥20 白日门传奇少一个启动区服和启动服务器的快捷键,东西都是全的 , 他们说套一个出来就行了 但我就是弄不好,谁看看,
  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题