鱼C论坛

 找回密码
 立即注册
查看: 4277|回复: 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

我的程序:

  1. #include<stdio.h>
  2. #include<malloc.h>

  3. typedef struct Node
  4. {
  5. int data;
  6.         struct Node *Next;
  7. }Node,*LinkList;
  8. typedef struct Node*  LinkList;
  9. void creatList(LinkList &L,int n)
  10. {
  11.         L=(LinkList)malloc(sizeof(Node));
  12.         L->Next=NULL;
  13.         while(n--)
  14.         {
  15.                 LinkList p=(LinkList)malloc(sizeof(Node));
  16.                 scanf("%d",&p->data);
  17.                 p->Next=L->Next;
  18.                 L->Next=p;
  19.         }
  20. }
  21. int Listsize(LinkList &L)
  22. {
  23.         int count=0;
  24.         LinkList p;
  25.         p=L;
  26.         while(p!=NULL)
  27.         {
  28.                 p=p->Next;
  29.                 count++;
  30.         }
  31.         return count;
  32. }
  33. int insertList(LinkList &L,int i,int e)
  34. {
  35.         if(i>=Listsize(L))
  36.         {
  37.                 return -1;
  38.         }
  39.         int j;
  40.         LinkList p,s;
  41.         p=L;
  42.         j=0;
  43.        
  44.         while(p&&j<i-1)
  45.         {
  46.                 p=p->Next;
  47.                 j++;
  48.         }
  49.        
  50.         if(!p||j>i-1)
  51.         {
  52.                 return -1;
  53.         }
  54.        
  55.         s=(LinkList)malloc(sizeof(Node));
  56.         s->data=e;
  57.         s->Next=p->Next;
  58.         p->Next=s;
  59.         return 0;
  60. }

  61. int delList(LinkList &L,int i)
  62. {
  63.         if(i==0||i>=Listsize(L))
  64.         {
  65.                 return -1;
  66.         }
  67.         int j;
  68.         LinkList p,s;
  69.         p=L;
  70.         j=0;
  71.         while(p->Next&&j<i-1)
  72.         {
  73.                 p=p->Next;
  74.                 ++j;
  75.         }
  76.        
  77.         if(!(p->Next)||j>i-1)
  78.         {
  79.                 return -1;
  80.         }
  81.         s=p->Next;
  82.         p->Next=s->Next;
  83.         if(p->data!=NULL)
  84.         {
  85.                 p->data=s->data;
  86.         }
  87.         free(s);
  88.         return 0;
  89. }

  90. void printList(LinkList &L)
  91. {
  92.         LinkList p;
  93.         p=L;
  94.         while(p!=NULL)
  95.         {
  96.                 p=p->Next;
  97.                 printf("%d ",p->data);
  98.         }
  99. }

  100. int main()
  101. {
  102.         int n,m,i,flag,k,data;
  103.         LinkList list;
  104.         scanf("%d",&n);
  105.         if(n>=100000)
  106.         {
  107.                 return 0;
  108.         }
  109.         creatList(list,n);
  110.        
  111.         scanf("%d",&m);
  112.         if(m>=100000)
  113.         {
  114.                 return 0;
  115.         }
  116.         for(i=0;i<m;i++)
  117.         {
  118.                 scanf("%d",&flag);
  119.                 if(flag==0)
  120.                 {
  121.                         scanf("%d%d",&k,&data);
  122.                         insertList(list,k,data);
  123.                 }
  124.                 if(flag==1)
  125.                 {
  126.                         scanf("%d",&k);
  127.                         delList(list,k);
  128.                 }
  129.         }
  130.         printList(list);
  131.         return 0;
  132. }
复制代码



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

使用道具 举报

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

使用道具 举报

发表于 2020-10-1 10:53:48 | 显示全部楼层
感觉应该是输出函数的问题
  1. void printList(LinkList &L)
  2. {
  3.         LinkList p;
  4.         p=L;
  5.         while(p!=NULL)
  6.         {
  7.                // 先打印当前结点,再指向下一结点
  8.                 printf("%d ",p->data);
  9.                 p=p->Next;
  10.         }
  11. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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-5-12 19:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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