软考笔记(一)
来源:互联网 发布:sigma.js 示例 编辑:程序博客网 时间:2024/04/28 18:46
软考视频这一部分讲的数据结构与算法,对应自考《数据结构与导论》,所以看视频时非常轻松,虽然考过但还想做个总结做为笔记。
一、整体结构
二、线性结构
2.1 队列(queue)
队列是“先进先出”的线性表,就像去食堂打饭排队,排队在前的先打到饭,不允许“插队”,新来的只能排在队尾。
包含顺序队列和循环队列,在循环队列(CQ)中,设头为front,尾是rear,则
判断队列满的条件为:(CQ.rear+ 1)% maxsize = CQ.front
判断队列为空的条件为: CQ.rear = CQ.front
2.2 栈(stack)
栈是“先进后出”的线性表,对表的操作只能在栈顶完成。就像一摞洗好的盘子,洗一个摞一个,用的时候总是从最上面取走。
2.3 线性表
2.3.1 顺序表
顺序表是表中的结点依次存放在一组连续的存储单元
2.3.2 链表
a)单链表
一个数据元素和一个指针组成单链表的一个结点,就像火车的每节车厢和车钩。各个结点在内存中的存储位置不一定连续,可存放于不同的位置。
插入:
解析:插入s结点后,s指向a2的指针式p的next指针,p又指向s。所以:s->next=p->next,p->next = s
删除:
解析:删除q结点,原本p指向a2的指针指向了a3,所以:p->next= q->next
b)循环链表
最后一个结点的指针指向第一个结点,构成一个环
c)双链表
在单链表的每个结点中再设置一个指向其前驱结点的指针域,这样每个结点有2个指针
插入:
解析:插入结点x后,q指向a2的指针是a1指向a2的指针,a2的前驱指针指向x,所以有:
q->prior = p;
q->next = q->next;
p->next = q;
q->next->prior = q;
删除:
解析:删除a2结点,它的前驱结点的后继结点指向a3,a2的后继结点的前驱结点指向a1,所以有:
p->next->prior= p->prior;
p->prior->next= p->next;
三、非线性结构
3.1 图
a)图分外无向图和有向图,由顶点和边组成。无向图顶点的表示(a,b),有向图顶点的表示<a,b>
b)顶点的度:无向图顶点V的度为与该顶点相关联的边的数目,有向图为入度(以顶点V为终点的弧)+ 出度(以顶点V为起点的弧)
c)存储结构:邻接矩阵和邻接表
无向图的邻接矩阵:
有向图的邻接矩阵:
带权值有向图的邻接表:
d)图的遍历:从某个顶点出发系统的访问图的每个顶点,并且每个顶点只被访问一次
3.2 树
a)相关术语
结点的度:树上任意结点所拥有的子树的数目
叶子:度为0的结点
树的度:一棵树中所有结点的度的最大值
b)二叉树的遍历
前序遍历:先访问根结点,再访问叶子结点
中序遍历:先访问左子树,再访问根,最后访问右子树
后序遍历:先访问左右子树最后访问根
例:
前序遍历:ABDECF
中序遍历:DBEAFC
后序遍历:DEBFCA
c)树和二叉树的转换:前序遍历不变,树的中序和二叉树的后序相同,树的孩子结点转为左子树结点,兄弟结点转为右子结点
四、查找
4.1顺序查找:从表的一端开始,按顺序对比当前结点与关键字是否相等。ASL(平均查找长度):(n+1)/2
4.2二分查找:每次用给定的值与处在表中间位置的数据元素进行比较。ASL=log2(n+1) -1
4.3 分块查找:根据索引找到相应的块,再在块中查找。ASL== log2(n/s + 1) + s/2
五、排序
- 软考笔记(一)
- 软考(一):迎战软考
- 软考 (一) 感触
- 软考(一)流水线
- 软考笔记(二)
- 软考(一)-软考开始了
- 复习软考的心路历程(一)
- 【软考】(一)编译原理-文法
- 软考之路(一)---数据结构
- 软考(一)整体总结
- 软考之路(一)千里之行始于足下
- 软考记录集(一)
- 软考课本总结(一)
- 软考专项复习总结(一)
- 软考——数据库(一)
- 软考-数据结构中的树(一)
- 【软考篇】--软考知识点总结(一)
- 软考之路(一)---数据结构
- 自动化1122徐达武第四周剩下的作业
- 学习<opencv> CascadeClassifier::detectMultiScale 各个参数作用
- javascript替换所有反斜杠”\“的写法
- HTTP 协议实例
- 前端笔试题阿里篇 之一-- css,js打造rating打分效果
- 软考笔记(一)
- 解决Matlab中load一个mat文件时出现The element type "name" must be terminated by the matching end-tag "</name>"的
- HDU 4442 Physical Examination
- mysql 数据库 错误 Data truncation: Data too long for column 'name' at row 1
- 一步步学习微软InfoPath2010和SP2010--第十三章节--SharePoint视图和仪表板(12)--关键点
- Android 服务(service)的生命周期以及利用bindservice调用服务里面的方法
- 《Boost标准库完全开发指南》第三章-内存管理
- c++中static几个含义
- 不安装python也正常运行编译python的程序