线性表思想小结
来源:互联网 发布:java线程同步的方法 编辑:程序博客网 时间:2024/06/06 10:54
线性表思想小结
一、链表:单向链表 单向循环链表 双向链表 双向循环链表
(按表头节点还可分:是否带表头节点的链表)
(按照链表的生成方式还可以分为动态链表和静态链表)
操作:
1.添加节点
单向链表为例
技巧:先处理要插入的节点,可以防止节点丢失
步骤:q ->next = p->next;
p ->next = q;
2.删除节点
双向链表为例
步骤:p->next = q->next; // 将p节点与q后面的节点相连接
q->next->pre = p ;//将q节点后面节点的前驱指向p节点
free(q); //释放要删除的q节点
3.链表 查询
实质为对链表的遍历,看节点的数据域里是否有匹配的信息若有则退出,返回当前节点指针
a.对于双向有序的链表,可以考虑当前current指针的位置进行向前或着向后的遍历查找
b.对于双向循环链表,若大致可知信息位于链表的中后段即可通过前驱指针pre对链表进行逆向遍历。
4.链表 销毁
用循环进行销毁
原理向相同:后判前删
while (q != NULL){ free(p); p = q; q = p->next;}free(p); //当q为指向空的时候,删除最后一个p节点(其他链表的处理方式相类似)
5.静态链(游标实现法)表简结
(用结构体数组实现,用游标模拟指针的作用)
结构体定义:
typedef struct { char data; int cur; //代替了指针域 为游标}Static list;
二、堆的思想:
手动分配与释放
三、栈的思想:First In Last Out
对数据进行处理由 栈顶 开始(即从一端来处理数据)
四、队列的思想:First In First Out
与栈不同的是,队列的规则是:前删后加:在前端进行删除,后端进行添加(简而言之,操作端有两个,分别实现不同的作用)
——为了节省空间,循环队列就来了:利用求余的运算方式可将数据再次存入已空的队列前头(只是一个普通的顺序队列存储空间单元,利用求余运算对其进行了重复的使用,从而达到一种循环的效果(此处要注意对队列的判空处理))
0 0
- 线性表思想小结
- 线性表知识点小结
- 线性表相关操作思想
- 之线性链表小结
- 数据结构学习小结(1)-----线性结构-----线性表
- 线性表顺序存储结构小结
- 线性表(思想+伪代码+部分代码实现)
- ajax思想小结.....
- 思想创新工作小结
- 二叉树思想小结
- 状态机思想小结
- 思想小结--one
- 分治思想小结
- 线性模型小结
- PRML线性模型小结
- 线性拟合小结
- 数据结构中线性表和链表的小结
- 数据结构(寒假小结)——2.线性表
- C++面向对象编程(五)之 运算符重载
- Android SDK 更新地址 下载和更新失败的解决方法
- 如何克服 JavaScript 框架疲劳?
- Hibernate 的延迟加载(懒加载)简介1
- Android实战简易教程-第二十三枪(基于Baas的用户注册和登录模块实现!)
- 线性表思想小结
- Android ApiDemos 登顶之路(一)
- git-osc自定义控件之:CircleImageView
- Android客户端与服务器交互中的token
- Eclipse插件开发中的选择监听机制(Selection Provider-Listener)
- NYOJ 187 快速查找素数
- 【LeetCode-面试算法经典-Java实现】【021-Merge Two Sorted Lists(合并两个排好序的单链表)】
- 【LeetCode-面试算法经典-Java实现】【022-Generate Parentheses(生成括号)】
- 雕刻效果的实现【OpenCV+QT】