鏈表之順序存儲

順序存儲優勢:spa

1 不用額外增長新的節點空間code

2 能夠快速讀取任意位置的元素blog

順序存儲缺點:get

1 插入和刪除須要移動大量元素it

2 長度變化較大時,難以估計長度io

3 存儲空間碎片化class

 

讀取時,時間複雜度爲O(1);List

插入刪除時,時間複雜度爲O(n);im

 

實例代碼

 1 /*Edit by Xhalo*/
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 
 5 #define MAXSIZE 20
 6 
 7 typedef struct seqList{  8     int data[MAXSIZE];  9     int length; 10 }SL; 11 
12 
13 int initElem(SL *L,int len); 14 void showElem(SL *L); 15 int getElem(SL *L,int n); 16 int insertElem(SL *L,int n,int num); 17 int deleteElem(SL *L,int n); 18 
19 int main() 20 { 21     SL * L = (SL *)malloc(sizeof(SL)); 22     /*初始化鏈表*/
23     if(initElem(L,10)) 24         return -1; 25  showElem(L); 26     /*查找指定的元素*/
27     printf("the first number is %d\n",getElem(L,1)); 28     /*插入指定位置的元素*/
29     if(insertElem(L,4,100)) 30         return -1; 31  showElem(L); 32     /*刪除指定位置的元素*/
33     if(deleteElem(L,5)) 34         return -1; 35  showElem(L); 36     return 0; 37 } 38 int initElem(SL *L,int len){ 39     int i; 40     for(i=0;i<len;i++){ 41         L->data[i]=i*2+1; 42  } 43     L->length = len; 44     return 0; 45 } 46 
47 void showElem(SL *L){ 48     int len=L->length; 49     int i; 50     for(i=0;i<len;i++){ 51         printf("%d ",L->data[i]); 52  } 53     printf("\n"); 54 } 55 
56 int getElem(SL *L,int n){ 57     if(L->length == 0 || n<0 || n>L->length) 58         printf("get List number error!"); 59     return L->data[n-1]; 60 } 61 
62 int insertElem(SL *L,int n,int num){ 63     int i; 64     if(n>L->length) 65         return 1; 66     if(n<1 || n>L->length+1) 67         return 1; 68     if(n <= L->length){ 69         for(i=L->length-1;i>=n-1;i--) 70             L->data[i+1] = L->data[i]; 71  } 72     L->data[n-1]=num; 73     L->length++; 74     return 0; 75 } 76 int deleteElem(SL *L,int n){ 77     int i; 78     if(n>L->length) 79         return 1; 80     if(n<1 || n>L->length+1) 81         return 1; 82     if(n <= L->length){ 83         for(i=n-1;i<L->length;i++) 84             L->data[i] = L->data[i+1]; 85  } 86     L->length--; 87     return 0; 88 }

運行結果

相關文章
相關標籤/搜索