这里的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");
}
}
我竟然看不出这是C语言还是C++
兄弟你学的是C语言还是C++ ?
虽然说C语言和C++可以混合编程,但也不是你这么混合的呀
人造人 发表于 2023-1-7 11:41
我竟然看不出这是C语言还是C++
兄弟你学的是C语言还是C++ ?
虽然说C语言和C++可以混合编程,但也不是你 ...
文件的格式使用的C++
我看的是严蔚敏老师数据结构,因为我是刚学不久,所以不知道是怎么回事。 就是在顺序表的初始化哪里出现了问题
书上面是伪代码,我也不清楚自己的问题出在了哪里 把编译器警告打开
人造人 发表于 2023-1-7 12:02
把编译器警告打开
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4700 使用了未初始化的局部变量“L” 课时10 E:\Microsoft Visual Studio\Project\作业\课时8\课时10\main.cpp 47
阿布布 发表于 2023-1-7 12:05
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4700 使用了未初始化的局部变量“L” 课时10 E:\Mic ...
报错是这样的
本帖最后由 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]