软件设计师【数据结构与算法基础知识及相关试题】
一.图
二.树
三.排序算法
1.稳定排序算法&不稳定排序算法
2.插入排序
3.选择排序
4.交换排序
5.归并排序
6.基数排序
7.各排序算法的特点
四.其它算法
1.递推法
2.回溯法
3.贪婪法
4.分治法
5.动态规划法
五.基础试题
1.
2.
3.
4.
5.
6.
7.
8.
9.
六.备注
1.数据结构可以用一个二元组{D,R}表示。其中D是某种数据对象,是数据结构(成为节点)的非空有限集合;R是该对象中所有数据成员之间的关系的有限集合。
2.稀疏矩阵转一维数组坐标变换:
3.线性表主要的存储结构有两种:顺序存储结构和链式存储结构。采用顺序存储结构,就称为顺序表(常用数组实现);采用链式存储结构则称为线性链表(即链表)。
4.顺序存储线性表的最大优点就是随机存取线性表中的任意一个节点,缺点主要有两个,一是此线性表的大小通常是固定的,不利于任意增加或减少线性表的节点个数;二是插入和删除线性表的节点时,要移动数组中的其它元素,操作复杂。
5.队列也是一种特殊的线性表,只允许在一端进行插入,另一端进行删除运算。允许删除运算的那一端称为队首,允许插入运算的一端称为队尾。
6.循环队列在队列为空的初态为head=tail=0。在循环队列中,当tail赶上head时,队列满。反之,当head赶上tail时,队列变为空。这样队空和队满的条件都是head=tail,这样就会给程序判别队空和队满带来麻烦。因此,可采用当队列只剩下一个空闲节点的空间时,就认为是队列已满的简单办法,以区别队空和队满。即队空为head=tail,队满为head=tail+1。
7.栈是另一种特殊的线性表,栈只允许在同一端进行插入和删除操作。允许插入和删除的一端为栈顶,另一端为栈底。
8.采用顺序实现的栈中,初始化运算负责将栈顶编码top初始化为"-1",使栈为空,在进栈操作时,需要判断栈是否满(top=N-1说明栈满),如果未满,则将新元素入栈,并将top加1;在出栈操作时,需要判断栈是否为空(top=-1说明为空),如果非空,则取出栈顶元素,将top减1。
9.顺序栈的缺点是为了避免栈满发生溢出,需预先为栈设立足够大的空间,但太大会造成空间浪费,太小又容易发生溢出。
10.栈也可以用链表实现,用链表实现的栈称为链接栈。链表的第一个节点为顶节点,链表的首节点就是栈顶指针top,top为NULL的链接栈为空栈。
11.字符串的最后一个有效字符之后有一个字符串结束标志,记为"\0"。