鱼C论坛

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

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

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

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

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

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");
}
最佳答案
2020-10-12 20:50:55
巴巴鲁 发表于 2020-10-12 20:26
那我的代码能在vs上正常运行吗?

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

然后可以运行了。我输入了3,然后输入了三个数,出现了四个选项。然后我就没有再测试了。
QQ截图20201012201002.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-12 20:18:40 | 显示全部楼层
多半是上个窗口没关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那我的代码能在vs上正常运行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

然后可以运行了。我输入了3,然后输入了三个数,出现了四个选项。然后我就没有再测试了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-12 21:17:56 | 显示全部楼层
我去,谢谢兄弟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 21:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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