巴巴鲁 发表于 2020-10-12 20:11:13

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:40

多半是上个窗口没关

巴巴鲁 发表于 2020-10-12 20:26:47

405794672 发表于 2020-10-12 20:18
多半是上个窗口没关

那我的代码能在vs上正常运行吗?

405794672 发表于 2020-10-12 20:50:55

巴巴鲁 发表于 2020-10-12 20:26
那我的代码能在vs上正常运行吗?

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

然后可以运行了。我输入了3,然后输入了三个数,出现了四个选项。然后我就没有再测试了。

巴巴鲁 发表于 2020-10-12 21:17:56

我去,谢谢兄弟{:10_306:}
页: [1]
查看完整版本: vs出现图片中的错误