鱼C论坛

 找回密码
 立即注册
查看: 1246|回复: 4

[已解决]vs出现图片中的错误

[复制链接]
发表于 2020-10-12 20:11:13 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 巴巴鲁 于 2020-10-12 20:26 编辑
  1. #include <iostream>

  2. #include <stdio.h>

  3. #include <string.h>

  4. #include <conio.h>

  5. typedef struct Node
  6. {
  7.         int data;
  8.         struct Node *next;
  9. }Node, *LinkList;

  10. void CreateList(LinkList &L, int n);
  11. void InsertList(LinkList &L, int i, int e);
  12. void DeleteList(LinkList &L, int i);
  13. void LookList(LinkList L, int i);
  14. void PrintList(LinkList L);

  15. int main(void)
  16. {
  17.         int n, pro, i, e;
  18.         LinkList L;

  19.         printf("请输入你想输入几个数:");
  20.         scanf_s("%d", &n);

  21.         CreateList(L, n);

  22.         while (1)
  23.         {
  24.                 printf("-----------------------\n");
  25.                 printf("0.退出程序   1.插入元素\n");
  26.                 printf("2.删除元素   3.查找元素\n");
  27.                 printf("-----------------------\n");
  28.                 printf("请输入你想执行的功能:");
  29.                 scanf_s("%d", &pro);

  30.                 if (pro < 0 || pro > 3)
  31.                 {
  32.                         printf("输入有误,请重新输入!\n\n");
  33.                         continue;
  34.                 }

  35.                 switch (pro)
  36.                 {
  37.                         case 0:
  38.                                 exit(0);
  39.                                 printf("成功退出程序,欢迎下次再来\n");
  40.                         case 1:
  41.                                 printf("请输入在第几个数插入元素:");
  42.                                 scanf_s("%d", &i);
  43.                                 printf("请输入待插入的元素:");
  44.                                 scanf_s("%d", &e);
  45.                                 InsertList(L, i, e);
  46.                                 PrintList(L);
  47.                                 break;
  48.                         case 2:
  49.                                 printf("请输入删除第几个元素:");
  50.                                 scanf_s("%d", &i);
  51.                                 DeleteList(L, i);
  52.                                 PrintList(L);
  53.                                 break;
  54.                         case 3:
  55.                                 printf("请输入待查找的元素:");
  56.                                 scanf_s("%d", &e);
  57.                                 LookList(L, i);
  58.                                 break;
  59.                 }
  60.         }
  61. }


  62. void CreateList(LinkList &L, int n)
  63. {
  64.         LinkList r = L;
  65.         r->next = NULL;

  66.         printf("请输入%d个数:",n);
  67.         while (n--)
  68.         {
  69.                 LinkList p = (LinkList)malloc(sizeof(Node));
  70.                 scanf_s("%d", &p->data);

  71.                 // 尾插法
  72.                 p->next = NULL;
  73.                 r->next = p;
  74.                 r = p;
  75.         }
  76. }


  77. void InsertList(LinkList &L, int i, int e)
  78. {
  79.         int j = 0;
  80.         LinkList p, s;
  81.         p = L;

  82.         while (p && j < i)
  83.         {
  84.                 p = p->next;
  85.                 j++;
  86.         }

  87.         if (!p || j > i)
  88.         {
  89.                 printf("插入失败.....\n\n");
  90.                 return ;
  91.         }

  92.         s = (LinkList)malloc(sizeof(Node));
  93.         s->data = e;
  94.         s->next = p->next;
  95.         p->next = s;
  96.         printf("插入成功....\n");
  97. }


  98. void DeleteList(LinkList &L, int i)
  99. {
  100.         int j = 0;
  101.         LinkList p, s;
  102.         p = L;

  103.         while (p->next && j < i - 1)
  104.         {
  105.                 p = p->next;
  106.                 j++;
  107.         }

  108.         if (!(p->next) || j > i - 1)
  109.         {
  110.                 printf("删除失败....\n\n");
  111.                 return ;
  112.         }

  113.         s = p->next;
  114.         p->next = s->next;
  115.         free(s);
  116.         printf("删除成功...\n");

  117. }


  118. void LookList(LinkList L, int e)
  119. {
  120.         int j = 0;
  121.         LinkList p;
  122.         p = L;

  123.         while (p->next && p->next->data != e)
  124.         {
  125.                 p = p->next;
  126.                 j++;
  127.         }

  128.         printf("查找成功,是%d个结点\n\n", j);
  129. }


  130. void PrintList(LinkList L)
  131. {
  132.         LinkList p = L;
  133.         p = p->next; // 指向头结点

  134.         while (p != NULL)
  135.         {
  136.                 printf("%d ", p->data);
  137.                 p = p->next;
  138.         }

  139.         printf("\n\n");
  140. }
复制代码
最佳答案
2020-10-12 20:50:55
巴巴鲁 发表于 2020-10-12 20:26
那我的代码能在vs上正常运行吗?

你成功地让我测试了一下。
然后,居然不是C。
发现果然如你所说
看了一下你的主要代码,似乎不太正常。查看了你定义的LinkList,发现是个指针
那么,你定义了一个野指针,没有赋予任何值。创建后,直接对它的子级进行赋值。然而它自己都没创出来,子级当然访问不了
我给你改了一下,添加:
第25行:
LinkList L=new Node;

然后可以运行了。我输入了3,然后输入了三个数,出现了四个选项。然后我就没有再测试了。
QQ截图20201012201002.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-12 20:18:40 | 显示全部楼层
多半是上个窗口没关
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-12 20:26:47 | 显示全部楼层
405794672 发表于 2020-10-12 20:18
多半是上个窗口没关

那我的代码能在vs上正常运行吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-12 20:50:55 | 显示全部楼层    本楼为最佳答案   
巴巴鲁 发表于 2020-10-12 20:26
那我的代码能在vs上正常运行吗?

你成功地让我测试了一下。
然后,居然不是C。
发现果然如你所说
看了一下你的主要代码,似乎不太正常。查看了你定义的LinkList,发现是个指针
那么,你定义了一个野指针,没有赋予任何值。创建后,直接对它的子级进行赋值。然而它自己都没创出来,子级当然访问不了
我给你改了一下,添加:
第25行:
LinkList L=new Node;

然后可以运行了。我输入了3,然后输入了三个数,出现了四个选项。然后我就没有再测试了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-12 21:17:56 | 显示全部楼层
我去,谢谢兄弟
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-13 04:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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