数据结构期末大题.复习

一.静态链表的操作

例 :序列(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、队列中包含正确元素(QRS)得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分。 2int类型错为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)

七.哈希函数

八.排序

你可能感兴趣的:(数据结构)