1.顺序表结构及初始化
#include<stdio.h>
#include<iostream>
#define MAXSIZE 100
using namespace std;
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
}sqlist;
int InitList(sqlist &L){
L.elem = new ElemType[MAXSIZE];
if(!L.elem){
return 0;
}
L.length = 0;
return 1;
}
2.构建一个0-9的顺序表
void CreatList(sqlist &L){
L.length = 10;
for(int i = 0;i < L.length;i++){
L.elem[i] = i;
}
}
3.在指定位置插入元素
int InsertList(sqlist &L,int i,ElemType e){
if(i<1||i>L.length+1)
return 0;
if(L.length == MAXSIZE)
return 0;
for(int j = L.length-1; j>=i-1;j--){
L.elem[j+1] = L.elem[j];
}
L.elem[i-1] = e;
L.length++;
return 1;
}
4.删除元素
int DelList(sqlist &L,int i){
if(i<1||i>L.length+1)
return 0;
for(int j = i; j<=L.length-1; j++){
L.elem[j-1] = L.elem[j];
}
L.length--;
return 1;
}
5.查找序号为i的元素
int GetList(sqlist L,int i,ElemType &e){
if(i<1||i>L.length+1)
return 0;
e = L.elem[i-1];
return 1;
}
6.根据指定元素e查找在顺序表中的位置序号i
int ElemList(sqlist L,ElemType e){
for(int j = 0;j < L.length; j++){
if(L.elem[j] == e){
return j+1;
}
}
}
7.打印顺序表中的元素
void PrintList(sqlist L){
for(int i = 0;i<L.length; i++){
printf("%d ",L.elem[i]);
}
printf("\n");
}
8.主函数
int main()
{
sqlist L;
int InitLFlag = InitList(L);
if(InitLFlag == 1){
cout<<"创建成功"<<endl;
} else{
cout<<"创建失败"<<endl;
}
CreatList(L);
cout<<endl;
cout<<"顺序表:"<<endl;
PrintList(L);
cout<<endl;
int i,value,GetFlag;
cout<<"请输入序号取值:";
cin>>i;
GetFlag = GetList(L,i,value);
if(GetFlag == 1){
cout<<"取到的值为:"<< value <<endl;
}else{
cout<<"输入值越界"<<endl;
}
cout<<endl;
int e,ElemFlag;
cout<<"输入查找指定的值:";
cin>>e;
ElemFlag = ElemList(L,e);
if(ElemFlag){
cout<<"该元素的位置序号为:"<<ElemFlag<<endl;
}else{
cout<<"未查到该元素"<<endl;
}
cout<<endl;
int x,ele,InsertFlag;
cout << "请输入插入的序号:";
cin >> x;
cout << "请输入插入的值:";
cin >> ele;
InsertFlag = InsertList(L,x,ele);
if(InsertFlag == 1){
cout << "插入成功!" << endl;
cout << "顺序表长度:" << L.length << endl;
cout<<"插入后的顺序表:";
PrintList(L);
}
cout<<endl;
int n,delFlag;
cout<<"输入要删除的元素的序号:";
cin>>n;
delFlag = DelList(L,n);
if(delFlag == 1){
cout<<"删除成功"<<endl;
cout<<"删除后的顺序表:";
PrintList(L);
}
return 0;
}
9.运行结果
![顺序表的基本操作](https://img-blog.csdnimg.cn/86cbaa4165324d7e8fff2adc962da189.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU3Vuc2V0X1I=,size_20,color_FFFFFF,t_70,g_se,x_16)