鱼C论坛

 找回密码
 立即注册
查看: 4604|回复: 6

[已解决]怎么连续调用创建多个单链表

[复制链接]
发表于 2021-4-13 20:28:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如下代码,怎么能连续调用ListInser这个函数,以创建多个链表,卡了一个多小时了,就是没办法解决,
求大佬指点
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef int Status;
//链表的初始化
typedef struct LNode{
        ElemType data;
        struct LNode *next;
}LNode,*LinkList;
//建立一个空链表
Status LinkListInit(LinkList &L){
        L=(LinkList)malloc(sizeof(LNode));   //申请结点
        if(!L)  return -1;
        L->next=NULL;
        return 1;
}
//尾插法,插入单链表元素
Status ListInsert(LinkList &L,int i,ElemType e){
        ElemType x;
        LNode *p,*s;
        L->next=NULL;
        p=L;     //开始时,使得p指向头结点
        while(scanf("%d\n",&x)==1){
                s=(LinkList)malloc(sizeof(LNode));
                s->data=x;
                p->next=s;
                s->next=NULL;
                p=s;
        }
        return 1;
}
//查找链表中的第i个元素
/*Status GetElem(LinkList L,int i,ElemType &e){
        LNode *p;
        int j;
        p=L->next;
        //if(i<1||i>L.length)  return -1;
        for(j=0;j<i;j++){
                p=p->next;
        }
        if(!p||j>i)   return -1;
        e=p->data;
        return 1;
}*/
int main(){
        int i;
        ElemType e;
        LinkList La,p;
        LinkList Lb,q;
        LinkListInit(La);
        LinkListInit(Lb);
    printf("请输入要插入的单链表La的数据:");
                ListInsert(La,i,e);
                printf("La:");
        for(p=La->next;p!=NULL;p=p->next){
                printf("%d ",p->data);        }
                printf("\n");
        printf("请输入要插入的单链表Lb的数据:");
                ListInsert(Lb,i,e);
                printf("Lb:");
        for(q=Lb->next;q!=NULL;q=q->next){
                printf("%d ",q->data);        }
                printf("\n");
}


       


最佳答案
2021-4-14 18:07:47
2896513469 发表于 2021-4-14 15:30
我不是也调用了两次LinkList吗,按说不应该是创建了两个空链表La和Lb吗

2021414_180724.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-13 20:46:54 | 显示全部楼层
ListInsert参数La传入的是链表的头节点。而你的头节点是用LinkListInit来初始化的。
这么一来你先用循环来初始化多个头节点。再调用ListInsert把头节点传进去。这不就行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-13 21:01:19 | 显示全部楼层
ba21 发表于 2021-4-13 20:46
ListInsert参数La传入的是链表的头节点。而你的头节点是用LinkListInit来初始化的。
这么一来你先用循环来 ...

但是我调用了两次ListInsert,这样的话,不应该是创建了两个头结点吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-13 21:18:09 | 显示全部楼层
2896513469 发表于 2021-4-13 21:01
但是我调用了两次ListInsert,这样的话,不应该是创建了两个头结点吗?

那你LinkListInit这个是用来干嘛的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-14 15:30:31 | 显示全部楼层
ba21 发表于 2021-4-13 21:18
那你LinkListInit这个是用来干嘛的?

我不是也调用了两次LinkList吗,按说不应该是创建了两个空链表La和Lb吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-14 18:07:47 | 显示全部楼层    本楼为最佳答案   
2896513469 发表于 2021-4-14 15:30
我不是也调用了两次LinkList吗,按说不应该是创建了两个空链表La和Lb吗

2021414_180724.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-15 21:01:13 | 显示全部楼层

老哥,我换了个方法,解决了。我上面发的没法输入LB了,是不是因为没有清楚键盘缓冲区呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 22:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表