小米小鹏 2021-12-03 19:01 采纳率: 0%
浏览 20

无头结点单链表尾插法失效,编译无报错,运行终止

写代码创建无头结点的单链表
为什么无法输出,没有报错,只是输入元素后需要等待很久,然后自动结束了。

####问题遇到的现象和发生背景

问题相关代码,请勿粘贴截图
#include<bits/stdc++.h> 
using namespace std;   
typedef struct LNode{//定义一个单链表 
    int data;    //链表中存放数据 
    struct LNode *next; 
}LNode,*LinkList; //定义单链表类型
 
bool InitList(LinkList &L){//基本初始化一个单链表
    L =(LNode *)malloc(sizeof(LNode)); 
    L=NULL; 
    return true;
    } 
 
void List_Tailsert(LinkList &L){//使用尾插法建立一个单链表
        LNode *p=L; //p指针始终指向链尾元素 
        int e;
        while(scanf("%d",&e)==1){
        
            if(p==NULL){
                p->data=e;
                p->next=NULL;
                }
            else{
                LNode *s=(LinkList) malloc(sizeof(LNode));//申请一个新节点
                s->data=e; //新元素值给s新结点 
                p->next=s;//原来最后一个的指针指向s结点 
                p=s;
                }
        }    //s结点现在为最后一个结点 
        p->next=NULL;//使尾结点指向NULL          
}
 
void Scan_List(LinkList L){//扫描单链表并输出 
    LNode *p=L;
    while(p!=NULL){    
        printf("%d  ",p->data);
        p=p->next;
        }  
    printf("\n"); 
}
 
int main(){      
    LinkList L;    
    InitList(L);
    List_Tailsert(L);
    Scan_List(L);    
    return 0;    
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

调试到尾插法while语句断了

我想要达到的结果

使用带头结点的链表就没有问题,输入什么(a为结束标志),就可以输出什么

img

img

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-12-03 19:06
    关注

    第10行改为L->next=NULL
    if(p==NULL){
    p->data=e;
    p->next=NULL;
    }
    这判断写反了,应该p!=NULL才干这些啊

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 12月3日
  • 创建了问题 12月3日

悬赏问题

  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败
  • ¥15 复合卡卡号轨道写入芯片卡