阿布布 发表于 2023-1-7 11:03:12

这里的L要怎么初始化啊?

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;//顺序表中的元素类型
#define InitSize 100
//动态分配内存空间
typedef struct {
        ElemType * data;
int MaxSize;//动态数组的最大容量
int length;//顺序表中的元素个数
}SeqList;
//插入函数,i代表插入的位置,从1开始,e要插入的元素
bool ListInsert(SeqList& L, int i, ElemType e) {
        if (i <= 1 || i > L.length + 1)
        return false;
        if (L.length >= InitSize)//元素存满了
                return false;
        for (int j = L.length; j >= i; j--) {//移动顺序表中的元素
                L.data = L.data;
                L.data = e;//数组下标从零开始,插入第一个位置,访问的下标为0
                L.length++;
                return true;//走到这里代表插入成功,返回true
        }
}
//删除顺序表中i位置的元素
bool ListDelete(SeqList& L, int i) {
        if (i<1 || i>L.length)//判断删除的位置是否合法
                return false;
        if (L.length == 0)//顺序表中没有元素则无需删除
                return false;
        for (int j = i; j < L.length; j++)//从i位置依次把元素往前覆盖
                L.data = L.data;
        L.length--;//删除一个元素,顺序表的长度就减1
        return true;
}
//打印顺序表中的元素
void PrintList(SeqList& L) {
        for (int i = 0; i <L.length; i++){
                printf("%3d", L.data);//要求所有的元素打印到一排
        }
        printf("\n");
}

int main(void) {
        SeqList L;//顺序表的名称
        L.data = 1;
        L.data = 2;
        L.data = 3;
        L.length = 3;
        bool ret;
        ElemType Cr;
        printf("请输入想插入的元素值:\n");
        scanf("%d", &Cr);
        ret = ListInsert(L, 2, Cr);
        if (ret)
        {
                printf("插入成功\n");
                PrintList(L);//打印成功后的顺序表
        }
        else
        {
                printf("插入失败");
        }
        int i;//要删除的元素的位置
        printf("请输入要删除的位置:");
        scanf("%d", &i);
        ret = ListDelete(L, i);
        if (ret)
        {
                printf("删除成功\n");
                PrintList(L);
        }
        else
        {
                printf("删除失败\n");
        }

}

人造人 发表于 2023-1-7 11:41:44

我竟然看不出这是C语言还是C++
兄弟你学的是C语言还是C++ ?
虽然说C语言和C++可以混合编程,但也不是你这么混合的呀

阿布布 发表于 2023-1-7 11:56:48

人造人 发表于 2023-1-7 11:41
我竟然看不出这是C语言还是C++
兄弟你学的是C语言还是C++ ?
虽然说C语言和C++可以混合编程,但也不是你 ...

文件的格式使用的C++
我看的是严蔚敏老师数据结构,因为我是刚学不久,所以不知道是怎么回事。

阿布布 发表于 2023-1-7 11:59:27

就是在顺序表的初始化哪里出现了问题
书上面是伪代码,我也不清楚自己的问题出在了哪里

人造人 发表于 2023-1-7 12:02:19

把编译器警告打开

阿布布 发表于 2023-1-7 12:05:10

人造人 发表于 2023-1-7 12:02
把编译器警告打开

严重性        代码        说明        项目        文件        行        禁止显示状态
错误        C4700        使用了未初始化的局部变量“L”        课时10        E:\Microsoft Visual Studio\Project\作业\课时8\课时10\main.cpp        47       

阿布布 发表于 2023-1-7 12:06:01

阿布布 发表于 2023-1-7 12:05
严重性        代码        说明        项目        文件        行        禁止显示状态
错误        C4700        使用了未初始化的局部变量“L”        课时10        E:\Mic ...

报错是这样的

ExiaGN001 发表于 2023-1-7 12:15:51

本帖最后由 ExiaGN001 于 2023-1-7 12:25 编辑

解决步骤(一家之言):
1、将头文件改为C++格式,并引用namespace std;
例:stdio.h->cstdio ;stdlib.h->cstdlib;

#include<cstdio>
#include<cstdlib>
using namespace std;
#define _CRT_SECURE_NO_WARNINGS


2、把SeqList的定义改成这样:

typedef structseqlist{
      ElemType * data;
        int MaxSize;//动态数组的最大容量
        int length;//顺序表中的元素个数
        seqlist()
        {
                data=(ElemType*) malloc(InitSize);
                MaxSize=InItSize;
                length=0;
        }
        ~seqlist()
        {
                free(data);
        }
}SeqList;



3、按照标准,将main函数声明改为 int main(),并在最后追加 return 0;


如果有用请设置最佳,谢谢!
页: [1]
查看完整版本: 这里的L要怎么初始化啊?