顺序表静态分配的基本操作
1.声明一个顺序表
2.初始化顺序表
3.插入操作
4.删除操作
5.按值查找
6.按位查找
7.求表长
8.输出表
9.判空操作
10.销毁表
所用编译器:Visual Studio Code 1.42.1 C++环境
#include <stdio.h>
#include <stdlib.h>
#define Maxsize 10
//声明一个顺序表
typedef struct{
int data[Maxsize];
int length;
}SqList;
//初始化顺序表
void InitList(SqList &L){
for(int i=0;i<Maxsize;i++){
L.data[i]=0;
}
L.length=0;
}
//插入操作
bool ListInsert(SqList &L,int i,int e){
if(i<1||i>L.length+1)
return false;
if(L.length>=Maxsize)
return false;
for(int j=L.length;j>=i;j--){
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
return true;
}
//删除操作
bool ListDelete(SqList &L,int i,int &e){
if(i<1||i>L.length)
return false;
e=L.data[i-1];
for(int j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return true;
}
//按值查找
int LocateElem(SqList L,int e){
for(int i=0;i<L.length;i++){
if(L.data[i]==e)
return i+1;
}
return 0;
}
//按位查找
int GetElem(SqList L,int i){
return L.data[i-1];
}
//求表长
int Length(SqList L){
return L.length;
}
//输出表
void PrintList(SqList L){
for(int i=0;i<L.length;i++){
printf("L.data[%d]=%d\n",i,L.data[i]);
}
}
//判空操作
void Empty(SqList L){
if(L.length==0)
printf("表为空\n");
else
printf("表不为空\n");
}
//销毁表
void DestroyList(SqList &L){
free(&L);
}
int main(){
int value_delete=0;
//基础操作
SqList L;
InitList(L);
ListInsert(L,1,5);
ListInsert(L,2,6);
ListInsert(L,1,4);
ListDelete(L,2,value_delete);
LocateElem(L,4);
GetElem(L,2);
Length(L);
PrintList(L);
Empty(L);
//一些输出验证
printf("Value_delete=%d\n",value_delete);
printf("LocateElem=%d\n",LocateElem(L,4));
printf("GetElem=%d\n",GetElem(L,2));
printf("Length=%d\n",Length(L));
//销毁表后,PrintList(L)已经无法输出表L
DestroyList(L);
PrintList(L);
return 1;
}
//输出结果
L.data[0]=4
L.data[1]=6
表不为空
Value_delete=5
LocateElem=1
GetElem=6
Length=2