数据结构期末大题.复习
一.静态链表的操作
例 :序列(a,b,c,d,e)已存在静态链表如下图a,头指针指向1号结点。请完成:
1.在静态链表中标出此序列的逻辑关系。
2.画出依次执行了b前插入f,删除e,c后插入g操作后的新的静态链表图b。
1 |
|
|
|
1 |
|
|
2 |
c |
|
|
2 |
|
|
3 |
e |
|
|
3 |
|
|
4 |
a |
|
|
4 |
|
|
5 |
d |
|
|
5 |
|
|
6 |
b |
|
|
6 |
|
|
7 |
|
|
|
7 |
|
|
|
图a |
|
|
图b |
二.队列的操作
例:(5分)用下标从0到4的一维数组存储一个循环队列,目前其中有两个元素A、B,状态如图(a)。如果此后有17个数据元素C、D、……P、Q、R、S依次进队列,其间又有16个元素先后出队列,请在图(b)中填写队列最后的状态,包括其中的元素(2分)和指针的位置(3分)。
rear→ |
|
R |
|
R |
|
B |
Q |
front→ |
Q |
front→ |
A |
P |
|
|
|
|
O |
rear→ |
|
|
|
S |
|
S |
(a) |
进队列后的元素 |
(b) |
特殊情况处理:1、队列中包含正确元素(Q、R、S)得2分。 2、指针相对于元素位置错1个扣1分。 3、元素和指针整体错位扣1分。
三.计算地址
例:(5分)在一个C语言程序中,有结构类型STUDENT的定义和结构数组allstudents的声明如下:
struct STUDENT
{
char name[8];
int number;
}
STUDENT allstudents[10][50];
allstudents是一个二维数组,它的每个元素都是包含name和number的结构类型。已知在C语言中,二维数组使用以行序为主序的存储结构,char类型占用1字节,int类型占用4字节。
假定allstudents在内存中的起始存储位置是2000,请写出计算allstudents[i][j]的存储位置的算式(3分),并计算allstudents[3][5]的存储位置(2分)。
allstudents[i][j]的存储位置 = 2000 + (I * 50 + j) * 12
allstudents[3][5]的存储位置 = 2000 + (3 * 50 + 5) * 12 = 3860
特殊情况处理:1、下标从1开始扣1分。 2、int类型错为1字节扣1分。
四.矩阵
例:已知一个稀疏矩阵如下:
1.给出它的三元组顺序表表示
2. 给出它逆置后的三元组顺序表
3.给出它的十字链表表示
0 2 0 0 0 0
1 0 0 0 0 0
0 3 0 0 0 0
0 0 0 0 4 0
0 5 0 0 0 6
i |
j |
v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
j |
v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A B
五.树(“中序 后序 先序”)
六.哈夫曼树(带权路径 WPL)
七.哈希函数
八.排序