阿Hun 2021-09-28 14:05 采纳率: 86.7%
浏览 260
已结题

C语言数据结构链表使用了未初始化的局部变量


#include<stdio.h>
#include<malloc.h>
typedef struct LNode {
    int data;
    struct LNode* next;
}LNode, * LinkList;

int InitList_L(LinkList& L);
void CreatList(LinkList& L, int n,LNode *p);

int main() {
    LinkList L1,L2;
    LNode* p1, * p2;
    int i,n1,n2;

    InitList_L(L1);
    InitList_L(L2);

    printf("L1中的数据个数\n");
    scanf("%d",&n1);
    CreatList(L1,n1,p1);
    
    printf("L2中的数据个数\n");
    scanf("%d", &n2);
    CreatList(L2, n2, p2);
    
    return 0;
}
//初始化
int InitList_L(LinkList& L) {
    L = (LinkList)malloc(sizeof(LNode));
    L->next = NULL;
    return 1;
}
//头插法建立单链表
void CreatList(LinkList& L, int n,LNode *p) {
    int i;
    for (i = n; i > 0; --i) {
        scanf("%d",&p->data);
        p->next = L->next;//插入到表头
        L->next = p;
    }
}

错误如下图

img

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-09-28 14:20
    关注

    修改如下,供参考:

    #include<stdio.h>
    #include<malloc.h>
    typedef struct LNode {
        int data;
        struct LNode* next;
    }LNode, * LinkList;
    int InitList_L(LinkList& L);
    void CreatList(LinkList& L, int n);   //, LNode* p);
    void PrintList(LinkList L);
    int main() {
        LinkList L1, L2;
        //LNode* p1, * p2;
        int i = 0, n1, n2;
        InitList_L(L1);
        InitList_L(L2);
        printf("L1中的数据个数\n");
        scanf("%d", &n1);
        CreatList(L1, n1);    //, p1);
        printf("L2中的数据个数\n");
        scanf("%d", &n2);
        CreatList(L2, n2);//, p2);
    
        PrintList(L1);
        PrintList(L2);
        return 0;
    }
    //初始化
    int InitList_L(LinkList& L) {
        L = (LinkList)malloc(sizeof(LNode));
        L->next = NULL;
        return 1;
    }
    //头插法建立单链表
    void CreatList(LinkList& L, int n){ //, LNode* p) {
        int i;
        LinkList p;
        for (i = n; i > 0; --i) {
            p = (LinkList)malloc(sizeof(LNode));
            p->next = NULL;
            scanf("%d", &p->data);
            p->next = L->next;//插入到表头
            L->next = p;
        }
    }
    void PrintList(LinkList L)
    {
        LinkList p=L->next;
        while (p)
        {
            printf("%d ", p->data);
            p = p->next;
        }
        printf("\n");
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日
  • 创建了问题 9月28日

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿