vs出现图片中的错误
本帖最后由 巴巴鲁 于 2020-10-12 20:26 编辑#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
typedef struct Node
{
int data;
struct Node *next;
}Node, *LinkList;
void CreateList(LinkList &L, int n);
void InsertList(LinkList &L, int i, int e);
void DeleteList(LinkList &L, int i);
void LookList(LinkList L, int i);
void PrintList(LinkList L);
int main(void)
{
int n, pro, i, e;
LinkList L;
printf("请输入你想输入几个数:");
scanf_s("%d", &n);
CreateList(L, n);
while (1)
{
printf("-----------------------\n");
printf("0.退出程序 1.插入元素\n");
printf("2.删除元素 3.查找元素\n");
printf("-----------------------\n");
printf("请输入你想执行的功能:");
scanf_s("%d", &pro);
if (pro < 0 || pro > 3)
{
printf("输入有误,请重新输入!\n\n");
continue;
}
switch (pro)
{
case 0:
exit(0);
printf("成功退出程序,欢迎下次再来\n");
case 1:
printf("请输入在第几个数插入元素:");
scanf_s("%d", &i);
printf("请输入待插入的元素:");
scanf_s("%d", &e);
InsertList(L, i, e);
PrintList(L);
break;
case 2:
printf("请输入删除第几个元素:");
scanf_s("%d", &i);
DeleteList(L, i);
PrintList(L);
break;
case 3:
printf("请输入待查找的元素:");
scanf_s("%d", &e);
LookList(L, i);
break;
}
}
}
void CreateList(LinkList &L, int n)
{
LinkList r = L;
r->next = NULL;
printf("请输入%d个数:",n);
while (n--)
{
LinkList p = (LinkList)malloc(sizeof(Node));
scanf_s("%d", &p->data);
// 尾插法
p->next = NULL;
r->next = p;
r = p;
}
}
void InsertList(LinkList &L, int i, int e)
{
int j = 0;
LinkList p, s;
p = L;
while (p && j < i)
{
p = p->next;
j++;
}
if (!p || j > i)
{
printf("插入失败.....\n\n");
return ;
}
s = (LinkList)malloc(sizeof(Node));
s->data = e;
s->next = p->next;
p->next = s;
printf("插入成功....\n");
}
void DeleteList(LinkList &L, int i)
{
int j = 0;
LinkList p, s;
p = L;
while (p->next && j < i - 1)
{
p = p->next;
j++;
}
if (!(p->next) || j > i - 1)
{
printf("删除失败....\n\n");
return ;
}
s = p->next;
p->next = s->next;
free(s);
printf("删除成功...\n");
}
void LookList(LinkList L, int e)
{
int j = 0;
LinkList p;
p = L;
while (p->next && p->next->data != e)
{
p = p->next;
j++;
}
printf("查找成功,是%d个结点\n\n", j);
}
void PrintList(LinkList L)
{
LinkList p = L;
p = p->next; // 指向头结点
while (p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n\n");
}
多半是上个窗口没关 405794672 发表于 2020-10-12 20:18
多半是上个窗口没关
那我的代码能在vs上正常运行吗? 巴巴鲁 发表于 2020-10-12 20:26
那我的代码能在vs上正常运行吗?
你成功地让我测试了一下。
然后,居然不是C。
发现果然如你所说
看了一下你的主要代码,似乎不太正常。查看了你定义的LinkList,发现是个指针
那么,你定义了一个野指针,没有赋予任何值。创建后,直接对它的子级进行赋值。然而它自己都没创出来,子级当然访问不了
我给你改了一下,添加:
第25行:
LinkList L=new Node;
然后可以运行了。我输入了3,然后输入了三个数,出现了四个选项。然后我就没有再测试了。 我去,谢谢兄弟{:10_306:}
页:
[1]