链表之顺序存储
顺序存储优点:
1 不用额外增加新的节点空间
2 可以快速读取任意位置的元素
顺序存储缺点:
1 插入和删除需要移动大量元素
2 长度变化较大时,难以估计长度
3 存储空间碎片化
读取时,时间复杂度为O(1);
插入或删除时,时间复杂度为O(n);
实例代码
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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?