鱼C论坛

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

求助大家,这个单链表的代码错在哪里了?为什么输出不是正常的结果

[复制链接]
发表于 2020-9-30 20:30:37 | 显示全部楼层 |阅读模式

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

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

x
题目是:输入第1行为1个正整数n,表示当前单链表长度;第2行为n个空格间隔的整数,为该链表n个元素的数据域值。第3行为1个正整数m,表示对该链表施加的操作数量;接下来m行,每行表示一个操作,为2个或3个整数,格式为0 k d或1 k。0 k d表示在链表第k个结点后插入一个数据域值为d的结点,若k=0则表示表头插入。1 k表示删除链表中第k个结点,此时k不能为0。注:操作序列中若含有不合法的操作(如在长度为5的链表中删除第8个结点、删除第0个结点等),则忽略该操作。n和m不超过100000。

输入样例:

5
1 2 3 4 5
5
0 2 8
0 9 6
0 0 7
1 0
1 6

输出样例:

7 1 2 8 3 5

我的程序:
#include<stdio.h>
#include<malloc.h>

typedef struct Node
{
int data;
        struct Node *Next;
}Node,*LinkList;
typedef struct Node*  LinkList;
void creatList(LinkList &L,int n)
{
        L=(LinkList)malloc(sizeof(Node));
        L->Next=NULL;
        while(n--)
        {
                LinkList p=(LinkList)malloc(sizeof(Node));
                scanf("%d",&p->data);
                p->Next=L->Next;
                L->Next=p;
        }
}
int Listsize(LinkList &L)
{
        int count=0;
        LinkList p;
        p=L;
        while(p!=NULL)
        {
                p=p->Next;
                count++;
        }
        return count;
}
int insertList(LinkList &L,int i,int e)
{
        if(i>=Listsize(L))
        {
                return -1;
        }
        int j;
        LinkList p,s;
        p=L;
        j=0;
        
        while(p&&j<i-1)
        {
                p=p->Next;
                j++;
        }
        
        if(!p||j>i-1)
        {
                return -1;
        }
        
        s=(LinkList)malloc(sizeof(Node));
        s->data=e;
        s->Next=p->Next;
        p->Next=s;
        return 0;
}

int delList(LinkList &L,int i)
{
        if(i==0||i>=Listsize(L))
        {
                return -1;
        }
        int j;
        LinkList p,s;
        p=L;
        j=0;
        while(p->Next&&j<i-1)
        {
                p=p->Next;
                ++j;
        }
        
        if(!(p->Next)||j>i-1)
        {
                return -1;
        }
        s=p->Next;
        p->Next=s->Next;
        if(p->data!=NULL)
        {
                p->data=s->data;
        }
        free(s);
        return 0;
}

void printList(LinkList &L)
{
        LinkList p;
        p=L;
        while(p!=NULL)
        {
                p=p->Next;
                printf("%d ",p->data);
        }
}

int main()
{
        int n,m,i,flag,k,data;
        LinkList list;
        scanf("%d",&n);
        if(n>=100000)
        {
                return 0;
        }
        creatList(list,n);
        
        scanf("%d",&m);
        if(m>=100000)
        {
                return 0;
        }
        for(i=0;i<m;i++)
        {
                scanf("%d",&flag);
                if(flag==0)
                {
                        scanf("%d%d",&k,&data);
                        insertList(list,k,data);
                }
                if(flag==1)
                {
                        scanf("%d",&k);
                        delList(list,k);
                }
        }
        printList(list);
        return 0;
 } 


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

使用道具 举报

发表于 2020-10-1 10:52:28 | 显示全部楼层
我为什么会报错,你把你的运行结果发过来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-1 10:53:48 | 显示全部楼层
感觉应该是输出函数的问题
void printList(LinkList &L)
{
        LinkList p;
        p=L;
        while(p!=NULL)
        {
               // 先打印当前结点,再指向下一结点
                printf("%d ",p->data);
                p=p->Next;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-4 21:16:25 | 显示全部楼层
巴巴鲁 发表于 2020-10-1 10:52
我为什么会报错,你把你的运行结果发过来

sorry大佬才看到你的留言
XP`~_4%`$5GBZJW545)F]XG.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-4 21:17:36 | 显示全部楼层
蚂蚁村长 发表于 2020-10-4 21:16
sorry大佬才看到你的留言

这个是应该有的结果
_JT_OMXS``8UXR_L2]}E06N.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-6 11:43:23 | 显示全部楼层
蚂蚁村长 发表于 2020-10-4 21:16
sorry大佬才看到你的留言

不好意思,我学的c,这是c++,最近几天学了在来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-6 11:52:36 | 显示全部楼层
蚂蚁村长 发表于 2020-10-4 21:16
sorry大佬才看到你的留言

嘻嘻,加我QQ一下,方便讨论
3194244910
备注成蚂蚁村长
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 17:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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