数据结构复习题纲

最近把近期的博客和生活中的一些琐事进行了整理和归纳,从现在起,开始着手准备数据结构的复习了。同时做一些笔记与大家共同分享、进步!感谢大家的支持!记得点赞啦!!!

第一章:算法:时间复杂度

算法:

对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作;此外,一个算法还具有下列五个重要特性:
1、有穷型:一个算法必须在执行又穷步之后结束;
2、确定性:每一条指令必须有确切的含义,不会产生二义性;
3、可行性:可通过以实现的基本预算执行有限次来实现;
4、输入:一个算法存在一个或多个输入;
5、输出:一个算法存在一个或多个输出。

对于一个好的算法须达到:
1、正确性;
2、可读性;
3、健壮性;
4、效率与低存储量需求;(以上四点,具体的就不展开了)

算法效率度量:

时空复杂度是用来辨别一个程序程序的完美程度的方法,其实简单来说就是看一个程序的复杂程度,越简单明了的程序给人,更清晰的思路和完美的解答都是复杂度普遍较低的,当然个别例外,但是对于大多数程序,尤其是大程序,不仅要考虑程序执行的步骤,还要考虑执行程序所需的内存空间大小,这都是在实际开发中影响着程序运行的关键因素。下面我们来简单了解一下关于时空复杂度的问题吧!
下面来讲讲本章重点:渐进时间复杂度,简称:时间复杂度。
关于时间复杂度和空间复杂度,可在以下网站查看,写的不错,推荐:
http://blog.csdn.net/itachi85/article/details/54882603

下面来介绍以下关于空间复杂度的问题:
http://blog.csdn.net/qq_29503203/article/details/52464306
以上两个大牛写的,容易理解,我也不在班门弄斧了。

第二章:链表

线性表是最常用且最简单的一种数据结构,简言之,一个个线性表是N个数据元素的有限序列。
线性表顺序存储结构的特点是:逻辑关系相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。
但同样存在着很大的缺点:在做插入或删除操作时,需移动大量的元素。
因此我们使用另一种表示方式:链式存储结构。
相比优点:他不要求逻辑上相邻的两个元素物理位置也相邻,因此他没有顺序存储结构所具有的弱点。
相比缺点:同时也失去了顺序表可随机存取优点。

线性链表

线性链表存储特点:用一组任意的存储单元存储线性表的数据元素。(存储单元可连续,也可不连续)!
线性链表包含两个特点:数据域、指针域。

线性链表

循环链表

另一种形式的链式存储结构。
特点:表中最后一个结点的指针域指向头结点,整个链表形成一个环。

循环链表

双向链表

为克服单链表这种单向性的缺点,由此而生双向链表。

第三章:栈和队列

限定仅在表尾进行插入或删除操作的线性表;表尾称栈顶,表头称栈底
又称后进先出。

栈

链队列

一个链队列需要分别表示队头和队尾的指针才能唯一确定。
链队列的操作即为单链表的插入和删除操作的特殊情况。
空的链队列:头指针和尾指针均指向头结点。

链队列

链队列2

循环队列

除了用一组地址连续的存储单元一次存放队列头到队列尾的元素之外,尚需附设两个指针front和rear分别指示队列头元素及队列尾元素的位置。
空队列:front=rear=0;每当插入新队列尾元素是“尾指针增一”;删除队列头元素时“头指针增一”
非空队列:尾指针始终指向尾元素的下一个位置。

循环队列

猜你喜欢

转载自blog.csdn.net/Songbook/article/details/79482735