顺序表
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 ;
}