|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 巴巴鲁 于 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");
- }
复制代码
你成功地让我测试了一下。
然后,居然不是C。
发现果然如你所说
看了一下你的主要代码,似乎不太正常。查看了你定义的LinkList,发现是个指针
那么,你定义了一个野指针,没有赋予任何值。创建后,直接对它的子级进行赋值。然而它自己都没创出来,子级当然访问不了
我给你改了一下,添加:
第25行:
LinkList L=new Node;
然后可以运行了。我输入了3,然后输入了三个数,出现了四个选项。然后我就没有再测试了。
|
-
|