#include<iostream>
using namespace std;
#define MAXSIZE 100 //顺序表的最大长度
typedef int ElemType; //取别名
#define ERROR 0
#define OK 1
//存储结构
typedef struct{
ElemType *elem; //存储空间的基地址
int length; //当前长度
}SqList; //顺序表的结构类型
//初始化分配空间
void InitList_Sq(SqList &L){
L.elem=new ElemType[MAXSIZE];
if(!L.elem)
cout<<"分配空间失败";
L.length=0;
}
//输入
void Input_Sq(SqList &L){
int i;
L.length=5;
for(i=0;i<L.length;i++)
cin>>L.elem[i];
}
//输出
void Output_Sq(SqList L){
int i;
for(i=0;i<L.length;i++)
cout<<L.elem[i]<<" ";
cout<<endl;
}
//取值
int GetElem(SqList L,int i,ElemType &e){
if(i<1||i>L.length)
return ERROR;
e=L.elem[i-1];
return OK;
}
//查找
int LocateElem(SqList L,ElemType e){
int i;
for(i=0;i<L.length;i++)
if(L.elem[i]==e)
return i+1;
return 0;
}
//插入
int ListInsert(SqList &L,int i,ElemType e){
int j;
if((i<1)||(i>L.length+1))
return ERROR;
if(L.length==MAXSIZE)
return ERROR;
for(j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=e;
++L.length;
return OK;
}
//删除
int ListDelete(SqList &L,int i,ElemType &e){
int j;
if((i<1)||(i>L.length))
return ERROR;
e=L.elem[i-1];
for(j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j];
--L.length;
return OK;
}
//主函数
int main(){
SqList sq;
InitList_Sq(sq);
int i;
ElemType a;
int flag;
// cout<<sq.length;
//线性表操作
//输入***********************************************
Input_Sq(sq);
//输出***********************************************
Output_Sq(sq);
//取值***********************************************
cout<<"请输入要取值的位置:" <<endl;
cin>>i;
flag=GetElem(sq,i,a);
if(flag==0)
cout<<"位置错误"<<endl;
else
cout<<"第"<<i<<"个位置的值是:"<<a<<endl;
//查找***********************************************
cout<<"请输入要查找位置的值:" <<endl;
cin>>a;
flag=LocateElem(sq,a);
if(flag==0)
cout<<"值不存在"<<endl;
else
cout<<a<<"这个值的位置是:"<<flag<<endl;
//插入***********************************************
cout<<"请输入要插入的位置和值:" <<endl;
cin>>i>>a;
flag=ListInsert(sq,i,a);
if(flag==0)
cout<<"插入错误"<<endl;
else{
cout<<"插入后的线性表为:" <<endl;
Output_Sq(sq);
}
//删除***********************************************
cout<<"请输入要删除的位置:" <<endl;
cin>>i;
flag=ListDelete(sq,i,a);
if(flag==0)
cout<<"删除失败"<<endl;
else{
cout<<"删除"<<a<<"后的线性表为:" <<endl;
Output_Sq(sq);
}
//主函数结束
return 0;
}
数据结构:线性表
于 2024-03-28 11:25:22 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)