博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[c/c++] C数据结构: 顺序表 Sequence List
阅读量:6473 次
发布时间:2019-06-23

本文共 1858 字,大约阅读时间需要 6 分钟。

1 #include "stdio.h" 2 #include "stdlib.h" 3  4 #define MAXSIZE 10 5  6 typedef int ElemType; 7 typedef struct { 8     int *elem; 9     int length;10     int listsize;11 } Sqlist;12 13 // 初始化顺序表14 void15 initSqlist(Sqlist *L) {16     L->elem = (int *) malloc(MAXSIZE * sizeof(ElemType));17     if(!L->elem) exit(0);18     L->length = 0;19     L->listsize = MAXSIZE;20 }21 22 // 向顺序表插入元素 23 void24 insertSqlistElem(Sqlist *L,int i,ElemType item) {25     ElemType *base,*insertPtr,*p;26 27     if(i < 1 || i > L->length + 1) exit(0); // 为啥要+1 是因为有向顺序表末尾追加28 29     if(L->length >= L->listsize) { // 需要申请更多的空间30         base = (ElemType *) realloc(L->elem,(L->listsize + 10) * sizeof(ElemType));31         L->elem = base;32         L->listsize = L->listsize + 10;33     }34     insertPtr = &(L->elem[i-1]); // 要插入的元素的启始位置35     // 从末尾开始到插入点,所有的数据向前移36     for(p = &L->elem[L->length - 1]; p >= insertPtr; p--) {37         *(p + 1) = *p;38     }39     *insertPtr = item;40     L->length++;41 } 42 43 // 从顺序表删除元素44 void 45 deleteSqlistElem(Sqlist *L,int i) {46     ElemType *deleteElem,*q;47 48     if(i < 1 || i > L->length) exit(0);49 50     deleteElem = &(L->elem[i - 1]);51     q = L->elem + L->length - 1;52     // 从删除位置开始,后面的数据向前移53     for(++deleteElem; deleteElem <= q; ++deleteElem) *(deleteElem - 1) = *deleteElem;54     L->length--;55 }56 57 // 打印输出顺序表58 void 59 printSqlist(Sqlist *L) {60     int i;61     for(i = 0; i < L->length; i++) printf("%d ",L->elem[i]);62     printf("\n");63 }64 65 int66 main() {67     Sqlist sqlist;68     int    i;69 70     initSqlist(&sqlist);71     for(i = 0; i < 15; i++) insertSqlistElem(&sqlist, i+1,i+1);72     printf("\nThe content of the list is \n");73     printSqlist(&sqlist);74 75     deleteSqlistElem(&sqlist,5);76     printf("\nDelete the fifth element\n");77     printSqlist(&sqlist);78 79     return 0;80 }

转载地址:http://bvvko.baihongyu.com/

你可能感兴趣的文章
三篇文章了解 TiDB 技术内幕 —— 说计算
查看>>
copy strong weak assign的区别
查看>>
OpenCV 入门
查看>>
css 3D transform变换
查看>>
ele表格合并行之后的selection选中
查看>>
正则表达式分解剖析(一文悟透正则表达式)
查看>>
解决UILable标点符号居中的问题
查看>>
HTML5新特性教程
查看>>
SpringBoot 实战 (十七) | 整合 WebSocket 实现聊天室
查看>>
ImageOptim-无损图片压缩Mac版
查看>>
12 Go语言map底层浅析
查看>>
vue-resumer 项目中 element-ui 遇到的 textarea autosize 问题
查看>>
以主干开发作为持续交付的基础
查看>>
PHP扩展库PEAR被攻击,近半年下载者或被影响
查看>>
传统运维团队转型应该注意哪些问题?
查看>>
JavaScript函数(二)
查看>>
Airbnb改进部署管道安全性,规范部署顺序
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>
当我们谈性能的时候,我们实际上在谈什么?
查看>>
i4o开源项目增强LINQ索引功能
查看>>