C语言 顺序表 静态分配
数据结构顺序表------静态分配
1 #include <stdio.h> 2 #define MaxSize 10 //定义最大长度 3 4 typedef struct{ 5 int data[MaxSize]; //用静态的数组存数据元素 6 int length; //顺序表的当前长度 7 }SqList; //顺序表的类型定义 8 9 //初始化一个顺序表 10 void InitList(SqList &L){ 11 for(int i=0; i<MaxSize; i++) 12 L.data[i]=0; //将所有数据元素设置为默认初始值 13 L.length = 0; //顺序表初始长度为0 14 } 15 16 //插入操作 最好时间复杂度O(1) 最差时间复杂度O(n) 平均时间复杂度O(n) 17 bool ListInsert(SqList &L,int i,int e){ 18 if(i<1||i>L.length+1) //判断i的范围是否有效 19 return false; 20 if(L.length>=MaxSize) //判断当前存储空间是否已满 21 return false; 22 for(int j=L.length; j>=i; j--) //将第i个元素及之后的元素后移 23 L.data[j]=L.data[j-1]; 24 L.data[i-1]=e; //在位置i处存放插入的数据e 25 L.length++; //长度加一 26 return true; 27 } 28 29 //删除操作 最好时间复杂度O(1) 最差时间复杂度O(n) 平均时间复杂度O(n) 30 bool ListDelect(SqList &L,int i,int & e){ 31 32 if(i<1||i>L.length) //判断i的范围是否有效 33 return false; 34 e=L.data[i-1]; //将被删除的元素赋值给e 35 for(int j=i; j<L.length; j++) //将第i个位置后的元素前移 36 L.data[j-1]=L.data[j]; 37 L.length--; //长度减一 38 return true; 39 40 } 41 42 //按位查找 i是第几个位置 43 int getElem(SqList L,int i){ 44 45 if(i<1||i>L.length) //判断i的范围是否有效 46 return false; 47 return L.data[i-1]; //返回元素的值 48 } 49 50 //按值查找 51 int LocateElem(SqList L,int e){ 52 53 for(int i=0; i<L.length; i++){ 54 if(L.data[i]==e) 55 return i+1; 56 } 57 return 0; 58 } 59 60 int main(){ 61 SqList L; 62 InitList(L); 63 64 return 0; 65 }