m0_74909072 2022-11-03 11:19 采纳率: 100%
浏览 38
已结题

编译没错,运行输入第二个数会直接退出,调试会报错Program received signal SIGSEGV,Segmentation fault.明明初始化了,为什么顺序表的长度是1。

#include <stdio.h>
#include<stdlib.h>
#include
#include <string.h>
using namespace std;
#define MAXSIZE 100
#define OVERFLOW 0
#define OK 1
//创建结构体
typedef struct{
int *elem;
int length;
}SqList;
//顺序表的初始化
int InitList(SqList &L){
L.elem=new int[MAXSIZE];
if(!L.elem) exit(OVERFLOW);
L.length=0;
return OK;
};
//顺序表的输入
void input(SqList &L) {
int n=0;
printf("请输入你要输入的数据个数:\n");
scanf("%d",&n);
if(n>0){
printf("请输入你要输入的数据:\n");
for(int i=0;i<n;i++){
scanf("%d",&L.elem[i]);
}
}
}
//顺序表的输出
void output(SqList &L){
if(L.length=0){
printf("顺序表中无数据\n");
}else{
for(int i=0;i<L.length;i++){
int a=0;
a=L.elem[i];
printf("%d",a);
}
}
}
//顺序表的取值
void getElem(SqList&L){
int i=0;
printf("请输入你要查找的数据的位置序号\n");
scanf("%d",&i);
if(i<1||i>L.length){
printf("你要查找的数据不存在\n");
}else{
int a=0;
a=L.elem[i-1];
printf("%d",a);
}
}
//顺序表的查找
void LocateElem(SqList&L) {
int a=0;
printf("请输入你要查找的数据\n");
scanf("%d",&a);
for(int i=0;i<L.length;i++){
if(L.elem[i]==a) {
printf("你的数据在第%d个",i+1);
}else{
printf("你查找的数据不存在");
}
}
}
void menu(){
printf("1.创建顺序表\n");
printf("2.顺序表的输出\n");
printf("3.顺序表的取值 \n");
printf("4.顺序表的查找\n");
}
int main(){
menu();
SqList L;
printf("%d\n",L.length);
while (1){
printf("请输入你要执行的操作:\n");
int choice=0;
scanf("%d",&choice);
switch(choice){
case 1:input(L);break;
case 2:output(L);break;
case 3:getElem(L);break;
case 4:LocateElem(L);break;
default:printf("输入错误");break;
}
}
}

  • 写回答

1条回答 默认 最新

  • 伍六七0804 2022-11-03 11:24
    关注

    你没有调用InitList啊 没有初始化

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月11日
  • 已采纳回答 11月3日
  • 创建了问题 11月3日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵