线性表的顺序存储及增删改查
代码
#include <bits/stdc++.h>
#define MAXSIZE 10
using namespace std;
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *elem;
int length;
}SqList;
Status InitList(SqList &L)
{
L.elem=new ElemType[MAXSIZE];
if(!L.elem)
{
cout<<"空间分配失败!"<<endl;
return 0;
}
L.length=0;
return 1;
}
Status CreatList(SqList&L)
{
int n;
cout<<"输入元素个数:"<<endl;
cin>>n;
if(n>MAXSIZE)
{
cout<<"输入个数大于上限!"<<endl;
return 0;
}
L.length=n;
cout<<"请输入元素:"<<endl;
for(int i=0;i<L.length;i++)
cin>>L.elem[i];
return 1;
}
Status InsertList(SqList &L,int i,ElemType x)
{
int j;
if(i<1||i>L.length+1)
{
cout<<"插入位置错误!"<<endl;
return 0 ;
}
if(L.length>=MAXSIZE)
{
cout<<"插入位置超出上限!"<<endl;
return 0;
}
cout<<"请输入要插入的线性表元素"<<endl;
for(j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=x;
L.length++;
return 1;
}
Status ListDelete(SqList &L,int i)
{
int j;
if(i<1||i>L.length)
{
cout<<"删除位置错误!"<<endl;
return 0;
}
for(j=i;j<L.length-1;j++)
L.elem[j-1]=L.elem[j];
L.length--;
return 1;
}
void SortList(SqList &L)
{
int i,j,k;
ElemType t;
for(i=0;i<L.length-1;i++)
{
k=i;
for(j=i+1;j<L.length;j++)
if(L.elem[k]>L.elem[j])
k=j;
if(i!=k)
{
t=L.elem[i];
L.elem[i]=L.elem[k];
L.elem[k]=t;
}
}
}
void ShowList(SqList L)
{
if(L.length==0)
{
cout<<"空!"<<endl;
return;
}
cout<<"当前线性表:"<<endl;
for(int i=0;i<L.length;i++)
cout<<L.elem[i]<<" ";
cout<<endl;
}
int main()
{
SqList L;
int i;
ElemType x;
InitList(L);
CreatList(L);
ShowList(L);
cout<<"请输入插入数据:"<<endl;
cin>>x;
cout<<"请输入插入位置:"<<endl;
cin>>i;
if(InsertList(L,i,x)==0)
cout<<"插入失败"<<endl;
else
cout<<"插入成功"<<endl;
ShowList(L);
cout<<"请输入删除位置:"<<endl;
cin>>i;
if(ListDelete(L,i)==0)
cout<<"删除失败"<<endl;
else
cout<<"删除成功"<<endl;
ShowList(L);
SortList(L);
cout << "排序后的线性表为:" << endl;
ShowList(L);
return 0;
}
实现截图
