顺序表
#定义
#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 GetElem(SqList L,int i){
return L.data[i-1];
}
#按值查找
int LocateElem(SqList L,int e){
for(int i=0;i<L.length;i++)
if(L.data[i]==e)
return i+1;
return 0;
}
#测试
#include <stdbool.h>
#include <stdio.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 GetElem(SqList L,int i){
if(i<1||i>L.length)
return false;
return L.data[i-1];
}
//按值查找
int LocateElem(SqList L,int e){
for(int i=0;i<L.length;i++)
if(L.data[i]==e)
return i+1;
return 0;
}
//打印
void PrintList(SqList L){
for(int i=0;i<L.length;i++)
printf("%d",L.data[i]);
printf("\n");
}
void main(){
SqList L;
InitList(&L);
ListInsert(&L,1,1);
PrintList(L);
ListInsert(&L,2,2);
PrintList(L);
ListInsert(&L,3,3);
PrintList(L);
ListInsert(&L,2,4);
PrintList(L);
int e=0;
ListDelete(&L,2,&e);
printf("%d\n",e);
PrintList(L);
printf("%d\n",GetElem(L,2));
PrintList(L);
printf("%d\n",LocateElem(L,3));
PrintList(L);
}