#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;
}
}
}
编译没错,运行输入第二个数会直接退出,调试会报错Program received signal SIGSEGV,Segmentation fault.明明初始化了,为什么顺序表的长度是1。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
悬赏问题
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?
- ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥15 cmd cl 0x000007b
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line