凌风小白 2017-11-17 02:54 采纳率: 0%
浏览 1127

用菜单或者简化处理以下代码(采用顺序表的存储方式,实现建立、查询、删除、增加、修改等功能0。

#include
#include
#include
using namespace std;
typedef int ElemType;
typedef int Status;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
ElemType * newbase,*p,*q;
//顺序表的结构描述
typedef struct{
ElemType elem;
int length;
int listsize;
}SqList;
//顺序表的初始化
Status InitList_Sq(SqList &L){
//构造一个空的线性表L
L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)exit(OVERFLOW); //存储分配失败
L.length = 0; //空表长度为0
L.listsize = LIST_INIT_SIZE; //初始存储容量
return OK;
}//InitList_Sq
//顺序表的建立
void Creat_Sq(SqList &L){
int i,n;
cout<<"请输入顺序表的元素个数:";
cin>>n;
for(i=0;i cout cin>>L.elem[i];
L.length++;
}
}
//顺序表的显示
void Show_Sq(SqList L){
for(int i=0;i cout }
cout }
//顺序表的插入
Status ListInsert_Sq(SqList &L,int i,ElemType e){
if(iL.length+1){
cout<<"i值不合法"< return ERROR;
}
if(L.length>=L.listsize){
newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase)exit(OVERFLOW);
L.elem = newbase;
L.listsize += LISTINCREMENT;
}
q = &(L.elem[i-1]);
for(p = &(L.elem[L.length-1]);p>=q;--p){
*(p+1) = *p;
}
*q = e;
++L.length;
return OK;
}
//顺序表的删除
Status ListDel_Sq(SqList &L,int i,ElemType e){
if(iL.length+1){
cout<<"i值不合法"<<endl;
return ERROR;
}
q = &(L.elem[L.length-1]);
for(p=&(L.elem[i-1]);p<=q;p++){
*p=
(p+1);
}
e=*q;
--L.length;
return OK;
}
//顺序表的修改
Status ListUpdate_Sq(SqList &L,int i,ElemType e){
if(iL.length+1){
cout<<"i值不合法"< return ERROR;
}
L.elem[i-1] = e;
return OK;
}
int main()
{
SqList L;
InitList_Sq(L);
Creat_Sq(L);
Show_Sq(L);
int num=0,i;
ElemType e;
bool flag = true;
while(flag){
cout cout cin>>num;
if(num>=1&&num<=3){
flag=false;
}else{
cout<<"输入非法"< }
}
switch(num){
case 1 :{
cout cin>>i;
cout<<"请输入要插入的数:";
cin>>e;
ListInsert_Sq(L,i,e);
}break;
case 2 :{
cout<<"请输入要删除的位置:";
cin>>i;
ListDel_Sq(L,i,e);
}break;
case 3 :{
cout<<"请输入要修改的位置:";
cin>>i;
cout<<"请输入修改成的数:";
cin>>e;
ListUpdate_Sq(L,i,e);
}break;
}
Show_Sq(L);
return 0;
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-11-19 02:31
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办