顺序表

md忘更顺序表了

定义顺序表

#define N 10 //顺序表初始长度

typedef struct
{
int len;//顺序表当前长度
int maxsize ;//顺序表最大容量
int *data ; //指针
}List;

初始化

void ini(List &L){
L.len = 0 ;
L.maxsize = N ;
L.data = (int *)malloc(sizeof(int)*L.maxsize);
}

增加顺序表长度(请求更多内存)

void Increase(List & L ,int x){
int *p = L.data;
L.data = (int *)malloc(sizeof(int)*(L.maxsize+x));
for(int i = 0 ; i < L.len ; i ++)
L.data[i] = p[i] ;
L.maxsize += x ;
free(p) ;
}

查找操作

1. 按位查找

//按位查找
int find_i(List L,int x){
return L.data[x-1];
}

2. 按值查找

//按值查找
int find_j(List L,int x){
for(int i = 0 ; i <L.len; i++)
if(L.data[i] == x)
return i+1 ;
return 0 ;
}

插入操作

bool Insert(List &L , int a ,int b){
if(a < 1||a>L.len+1) return false ;
if(L.len >= L.maxsize) return false ;
for(int i = L.len ; i >= a ; i --)
L.data[i] = L.data[i-1] ;
L.data[a] = b ;
L.len++ ;
return true ;
}

删除操作

bool Delete(List &L , int a ,int &b){
if(a < 1||a>L.len+1) return false ;
b = L.data[a-1];
for(int i = a ; i < L.len ; i ++)
L.data[i-1] = L.data[i] ;
L.len-- ;
return true ;
}