和菜鸟一起学数据结构之简单静态链表实现
来源:互联网 发布:华为 中兴 知乎 编辑:程序博客网 时间:2024/06/05 02:15
一般情况下,我们要嘛用数组,要嘛就用链表来实现一些线性的数据结构,很少用静态链表。一种基于数组的,具有链表的性质的数据结构。简单的写了个小程序。
#include <stdio.h>#include <stdlib.h>#include <string.h> #define MAXNUM 1000 typedef struct{ int data; int cur;}List[MAXNUM], Link; void list_create(Link *list);void list_insert(Link *list, int value);void list_delete(Link *list, int value);void list_print(Link *list); int main(void){ List list; int i; list_create(list); for(i = 1; i < 9; i++) list_insert(list, i); list_print(list); printf("\n"); list_delete(list, 2); list_print(list); printf("\n"); return 0;} /* 静态链表的链表头*/void list_create(Link *list){ list[0].cur = 0; list[0].data = 1; } /* 静态链表中插入一个元素*/void list_insert(Link *list, int value){ int i; int len; i = 0; while(list[i].cur != 0) i = list[i].cur; len = list[0].data++; list[i].cur = len; list[len].data = value; list[len].cur = 0;} /* 静态链表中删除一个元素*/void list_delete(Link *list, int value){ int i; int len; if(list[0].data == 1) { printf("Empty list\n"); return; } i = 0; while(list[i].cur != 0) { if(list[list[i].cur].data == value) { list[i].cur = list[list[i].cur].cur; } i = list[i].cur; }} /* 打印数组中所有的元素,或者打印链表中的元素*/void list_print(Link *list){ int i; if(list[0].data == 1) { printf("Empty list\n"); return; } i = 0; while(list[i].cur != 0) { printf("%d %d\n", list[i].data, list[i].cur); i = list[i].cur; } printf("%d %d\n", list[i].data, list[i].cur);/* for(i = 0; i < list[0].data; i++) printf("%d %d\n", list[i].data, list[i].cur);*/}
所谓的静态链表就是多了一个光标,类似于链表中的指针,好比把所有的数据都串起来了一样。
比如:
I data cur 0 5 1 1 1 3 2 2 4 3 5 2 4 6 0
上面就是一个静态链表了。
首先从表头i=0处开始吧。0-->1 , 1-->3, 3-->2, 2-->4, 4-->0。这样就是一个链着的链表了,数据还是存放在那里,不过只是有个光标的指向不同而已。就好比,单链表中数据也是动态申请来了后固定在一个内存空间,然后有个指针把所有的串起来。但是这个静态链表他又有可以当数组用,可见他的强大了。
- 和菜鸟一起学数据结构之简单静态链表实现
- 和菜鸟一起学数据结构之简单单链表实现
- 和菜鸟一起学linux之双向链表list head的简单实例
- 和菜鸟一起学OK6410之最简单字符驱动
- 和菜鸟一起学linux之input系统简单实例
- 和小强一起学数据结构之简单选择排序
- 和菜鸟一起学算法之递归和分治简单实例
- 和菜鸟一起学OK6410之最简单驱动模块hello world
- 和菜鸟一起学证券投资之股市简单财务分析
- 和菜鸟一起学linux之do{...}while(0)的简单实例
- 和菜鸟一起学linux之GCC内嵌汇编简单实例
- 和菜鸟一起学c之回调函数简单实例
- 和菜鸟一起学linux之我的vim简单配置
- 和菜鸟一起学android4.0.3源码之传感器的简单移植
- 和菜鸟一起学android4.0.3源码之硬件gps简单移植
- 和菜鸟一起学android4.0.3源码之wifi的简单分析
- 和菜鸟一起学android4.0.3源码之wifi direct的简单分析
- 和菜鸟一起学android4.0.3源码之硬件gps简单移植
- rails rspec测试
- myeclipse安装SVN
- 生产者-消费者问题
- 原码、反码和补码理解
- Ubuntu 开启 SSH服务
- 和菜鸟一起学数据结构之简单静态链表实现
- 成都国安局称1名男子泄漏王立军案侦办信息被拘-成都-王立军-侦办
- mobile agent 学习
- 虚拟化、云计算、开放源代码及其他
- 第七周任务 3-5
- hdu1582AC again-bfs
- python 实现linux命令 strings
- 图像处理 卷积 Convolution
- 进程和线程模型(android)