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 } 

 

posted @ 2021-07-07 09:43  徐柿子  阅读(205)  评论(0)    收藏  举报