废话就不多说了,直接上代码。
#include<iostream>
using namespace std;
#include<stdlib.h>
#define MAXSIZE 101//顺序表可能达到的最大长度
#define OK 1
#define OVERFLOW -2
#define ERROR 0
typedef int ElemType;
typedef int Status;
typedef struct
{
ElemType *elem;//存储空间的基地址
int length;//当前长度
}SqList;//顺序表的结构类型为SqList
Status InitSqList(SqList &L)//顺序表的初始化
{
L.elem=new ElemType[MAXSIZE];//为顺序表分配一个大小为MAXSIZE的数组空间
if(!L.elem) exit(OVERFLOW);//存储分配失败退出
L.length=0;//空表长度为零
return OK;
}
Status Input(SqList &L,int n)//顺序表的输入
{
int i;
for(i=0;i<n;i++)
{
cin>>L.elem[i];
}
L.length=n;
}
void Output(SqList L)//顺序表的输出
{
int i;
for(i=0;i<L.length;i++)
cout<<L.elem[i]<<" ";
}
Status ListLength(SqList L)//求顺序表的长度
{
return L.length;
}
Status GetElem(SqList L,int i,ElemType &e)//获取顺序表中某个元素的值
{
if(i<1||i>L.length) return ERROR;//判断i值是否合理,若不合理返回ERROR
e=L.elem[i-1];//elem[i-1]单元存储第i个数据元素
return e;
}
Status LocateElem(SqList L,ElemType e)//顺序表中元素的查找值为e的元素,并返回其序号
{
int i;
for(i=0;i<L.length;i++)
if(L.elem[i]==e) return i+1;//查找成功,返回其序号i+1
return 0;//查找失败,返回0
}
Status ListInsert(SqList &L,int i,ElemType e)//顺序表L第i个位置插入新的元素e,i的值合法范围是1=<i<=L.length+1
{
int j;
if((i<1)||(i>L.length+1)) return ERROR;//i值不合法
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;//将新元素e放入第i个位置
++L.length;//表长加1
return OK;
}
Status ListDelete(SqList &L,int i)//在顺序表L中删除第i个元素,i值的合法范围是1=<i<=L.length
{
int j;
if((i<1)||(i>L.length)) return ERROR;//i值不合法
for(j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j];//被删除元素之后的元素前移
--L.length;//表长减1
return OK;
}
int main()
{
SqList La;//创建顺序表
int m,n;
ListLength(La);//求顺序表的长度
InitSqList(La);//初始化顺序表
printf("请输入顺序表中元素的个数及元素:n\n");
cin>>n;//请输入顺序表中元素的个数
Input(La,n);//顺序表的输入
Output(La);//顺序表的输出
cout<<endl;
printf("输入要取值的元素:m\n");
cin>>m;
GetElem(La,m,n);//调用取值函数,查找元素m是否在顺序表中
printf("%d",GetElem(La,m,n)); //输出被查找的数值
cout<<endl;
printf("输入要查找的元素: m\n");
cin>>m;
LocateElem(La,m);//调用查找函数
printf("%d",LocateElem(La,m));//输出其序号加1
cout<<endl;
printf("插入的位置还有元素:m,n\n");
cin>>m>>n;//插入的位置还有元素
ListInsert(La,m,n);//调用插入函数
Output(La);//顺序表的输出
cout<<endl;
printf("输入要删除的元素的位置:m\n");
cin>>m;//输入要删除的元素的位置
ListDelete(La,m);//调用删除函数
Output(La);//顺序表的输出
cout<<endl;
printf("***********顺序表的基本操作***********\n");
return 0;
}
第一次发布博客,没神魔经验,请多多指教、、、、、、、、、、、、、、、、