前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >链表之顺序存储

链表之顺序存储

作者头像
用户1154259
发布2018-01-18 10:43:34
4570
发布2018-01-18 10:43:34
举报

顺序存储优点:

1 不用额外增加新的节点空间

2 可以快速读取任意位置的元素

顺序存储缺点:

1 插入和删除需要移动大量元素

2 长度变化较大时,难以估计长度

3 存储空间碎片化

读取时,时间复杂度为O(1);

插入删除时,时间复杂度为O(n);

实例代码

代码语言:javascript
复制
 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 }

运行结果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-01-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实例代码
  • 运行结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档