数据结构与算法学习笔记02_3(线性表)
来源:互联网 发布:佛经大全软件 编辑:程序博客网 时间:2024/05/22 07:56
数据结构与算法学习笔记02_3(线性表)
单链表的整表创建
单链表整表创建的算法思路如下:
创建单链表的过程是一个动态生成链表的过程,从“空表”的初始状态起,依次建立各元素结点并逐个插入链表。
所以单链表整表创建的算法思路如下:
声明一结点p和计数器变量i;
初始化一空链表L;
让L的头结点的指针指向NULL,即建立一个带头结点的单链表;
循环实现后继结点的赋值和插入。
头插法建立单链表
头插法从一个空表开始,生成新结点,读取数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到结束为止。
简单来说,就是把新加进的元素放在表头后的第一个位置:
先让新节点的next指向头节点之后
然后让表头的next指向新节点
void createListHead(LinkList *L, int n){LinkList p;int i;srand(time(0));//初始化随机种子*L = (LinkList)malloc(sizeof(Node));(*L)->next = NULL;for (i = 0; i < n;i++){p = (LinkList)malloc(sizeof(Node));p->data = rand() % 100 + 1;p->next = (*L)->next;(*L)->next = p;}}
尾插法建立单链表
void createListTail(LinkList *L, int n){LinkList p ,r;int i;srand(time(0));//初始化随机种子*L = (LinkList)malloc(sizeof(Node));r = *L;for (i = 0; i < n;i++){p = (LinkList)malloc(sizeof(Node));p->data = rand() % 100 + 1;r->next = p;r = p;}r->next = NULL;}
单链表的整表删除
单链表整表删除的算法思路如下:
声明结点p和q;
将第一个结点赋值给p,下一结点赋值给q;
循环执行释放p和将q赋值给p的操作;
Status ClearList(LinkList *L){LinkList p, q;p = (*L)->next;while (p){q = p->next;free(p);p = q;}(*L)->next = NULL;return Ok;}
结论:
若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构。
若需要频繁插入和删除时,宜采用单链表结构。
比如说游戏开发中,对于用户注册的个人信息,除了注册时插入数据外,绝大多数情况都是读取,所以应该考虑用顺序存储结构。
而游戏中的玩家的武器或者装备列表,随着玩家的游戏过程中,可能会随时增加或删除,此时再用顺序存储就不太合适了,单链表结构就可以大展拳脚了。
当线性表中的元素个数变化较大或者根本不知道有多大时,最好用单链表结构,这样可以不需要考虑存储空间的大小问题。
而如果事先知道线性表的大致长度,比如一年12个月,一周就是星期一至星期日共七天,这种用顺序存储结构效率会高很多。
0 0
- 数据结构与算法学习笔记02_3(线性表)
- 数据结构与算法学习笔记02_1(线性表)
- 数据结构与算法学习笔记02_2(线性表)
- 数据结构与算法学习笔记——线性表
- 数据结构与算法分析笔记(2)--线性表
- 数据结构与算法之线性表(一)(笔记)
- 数据结构与算法学习03-线性表
- 别样数据结构与算法学习(一)线性表
- 数据结构与算法-02线性表-01
- 数据结构与算法(5)--线性表
- 数据结构与算法(二)线性表
- 数据结构与算法(线性表)
- 数据结构与算法(上)线性表
- 【数据结构与算法学习笔记】PART3 线性结构(除向量外,数组、栈、队列、链表)
- 【学习笔记----数据结构02--线性表】
- 数据结构学习笔记(2)线性表
- 数据结构学习笔记 --- 线性表 (单链表)
- 数据结构学习笔记 --- 线性表 (单链表)
- 家乡的变化
- java反射笔记五
- 在Ubuntu 12.04 64bit上搭建Crtmpserver视频点播服务
- HDU 4602 Partition
- C++面试题(一)——基础概念篇
- 数据结构与算法学习笔记02_3(线性表)
- Android Application对象
- 大富翁Deal 维基百科 规则
- Ulipad Ubuntu 使用
- 深入理解Java HelloWorld
- 关于《最强大脑》周玮的一些想法
- "学生心态"
- Codeforces 384A Coder(水题)
- 让android支持RTSP(live555分析)