(2019级使用)《数据结构》测试题

(2019级使用)《数据结构》测试题
(2019级使用)《数据结构》测试题

《数据结构》试题(模一)

一、单项选择题(从下列各题四个备选答案中选出一个正确答案,将其代号(A,B,C,D)写在下表中,答题写在其它地方无效;每小题1分,共11分)

1.

A.元素

B.结点

C.数据类型

D.数据项

2.下列算法suanfa2的时间复杂度为____。

int suanfa2(int n)

{ int t=1;

while(t<=n)

t=t*2;

return t;

}

A.O(log2n)

B.O(2n)

C.O(n2)

D.O(n)

3.____又称为FIFO表。

A.队列

B.散列表

C.栈

D.哈希表

4.若6行8列的数组以列序为主序顺序存储,基地址为1000,每个元素占2个

存储单元,则第5行第3列的元素(假定无第0行第0列)的地址是____。

A.1086

B.1032

C.1068

D.答案A,B,C都不对

5.广义表(a,((b,( )),c),(d,(e)))的深度是____。

A.5

B.4

C.3

D.2

6.有n(n>0)个结点的完全二叉树的深度是____。

A.?log2(n)?

B.?log2(n)+1?

C.?log2(n+1)?

D.?log2(n)+1?

7.与中缀表达式a+b*c-d等价的前缀表达式是____。

A.+a-*bcd

B.*+-abcd

C.-+a*bcd

D.abcd+*-

8.折半查找有序表(6,15,30,37,65,68,70,72,89,99),若查找元素37,需依次与表中元素____进行比

较,。

A.65,15,37

B.68,30,37

C.65,15,30

D.65,15,30,37

9.对长度为10的表作选择(简单选择)排序,共需比较____次关键字。

A.45

B.90

C.55

D.110

10.对n个元素的表作快速排序,在最坏情况下,算法的时间复杂度为____。

A.O(log2 n)

B.O(nlog2 n)

C.O(n2)

D.O(2n )

11.对长度为10的表作2_路归并排序,共需移动____次(个)记录。

A.20

B.45

C.40

D.30

二、填空(每空1分,共11分)

1.一个数据结构在计算机中的表示(映象)称为 ________________?。

2.线性表中 ____________________________ 称为表的长度。

3.栈中元素的进出原则为 _____________________ 。

4.设数组A[1..10,1..8]的基地址为2000,每个元素占2个存储单元,若以行序为主序顺序存储,则元

素A[4,5]的存储地址为_____;若以列序为主序顺序存储,则元素A[4,5]的存储地址为______。

5.一棵深度为6的满二叉树有______个非终端结点。

6.若一棵二叉树中有8个度为2的结点,则它有_____个叶子。

7.顺序查找n 个元素的顺序表,当使用监视哨时,若查找成功,比较关键字的次数至少为____次, 最多为____次;若查找失败,比较关键字的次数为____次。 8.对长度为400的表采用分块(区)查找,最理想的块长为____。 三、回答下列问题 (每小题5分,共10分)

1.线性表的存储结构,在什么情况下采用顺序结构? 为什么?

2.二叉树有哪几种基本形态? 画图说明之。 四、试画出下列存储结构图(每小题4分,共20分) 1.数组A[1..2,0..2] 的以列序为主序的顺序存储结构。

2.依次将元素 A,C,D,B 插入一个初始状态为空的链式栈中,试画出所有插入完成之后的链式栈。

3.二叉树的顺序存储结构:

4.图的邻接矩阵:

5.有向图的逆邻接表:

五、求解下列问题 (每小题6分,共24分)

1.给定30个字符组成的电文:

D D D D D A A A B

E E A A

F C D A A C A B B C C C B A A D D 试为字符 A 、B 、C 、D 、E 、F 设计哈夫曼(Huffman)编码。 (1)画出相应的哈夫曼树;

(2)分别列出 A 、B 、C 、D 、E 、F 的哈夫曼码; (3)计算该树的带权路径长度WPL 。

2.试按表( 10,8,9,12,20,5,6,15,19,25 )中元素的排列次序, 将所有元素插入一棵初始为空的二叉排序树中, 使之仍是一棵二叉排序树。 (1)试画出插入完成之后的二叉排序树;

(2)若查找元素17,它将依次与二叉排序树中哪些元素比较大小? (3)假设每个元素的查找概率相等,试计算该树的平均查找长度 ASL 。 (4)对该树进行中序遍历,试写出中序遍历序列。 3.试将森林 F={ T1,T2,T3,T4 }转换为一棵二叉树。

T1 T2 T3 T4 4.找出下面网络的最小生成树。

3题图 4题图 5题图

六、填空题(在算法中有下划线____的位置填空,使之成为完整、正确的算法)

算法说明:已知r[1..n]是n个记录的递增有序表,用折半查找法查找关键字为k的记录,若查找失败,则输出”Failure”,返回零;否则输出”Success”,并返回该记录的序号值。(共8分)

算法(C函数):

int bin_search(struct arecord r[],int n,k:keytype)

/* r[1..n]为n个记录的递增有序表,k为关键字 */

{ int low, mid, hig ;

low=1; hig=n ; /* 各变量初始化 */

while( _____ )

{ mid=___________________ ;

if(k

else if(k==r[mid].key)

{ _____________________ ;

_____________________ ;

}

else _____________________ ;

}

__________________ ; __________________ ;

}

七、算法设计(算法中必须有注释,每小题8分,共16分)

1.设n个元素的线性表顺序存储在一维数组st[1..maxlen]的前n个位置上,试将新元素e插入表中第

i-1个和第i个元素之间,写出算法。

2.设Head为带表头结点的单链表的头指针,试写出算法:若为非空表,则输出首结点和尾结点的值

(data值);否则输出:”Empty list!”。

《数据结构》试题(模二)

一、单项选择题(从下列各题四个备选答案中选出一个正确答案,将其代号(A,B,C,D)写在下表中,答题写在其它地方无效;每小题1分,共11分)

1.

A.结点

B.数据元素

C.数据类型

D.数据项

2.下列算法suanfa1中语句"x=x*2;"的执行次数是____。

void suanfa1(int n)

{ int i,j,x=1;

for(i=1;i<=n;i++)

for(j=i;j<=n;j++)

x=x*2;

printf("%d",x);

}

A.n(n-1)/2

B.n(n+1)/2

C.n2

D.?nlog2n?

3.当需要随机查找线性表的元素时,宜采用____作存储结构。

A.双向链表

B.循环链表

C.顺序表

D.单链表

4.若8行6列的数组以行序为主序顺序存储,基地址为2000,每个元素占2个存储单元,则第5行第3

列的元素(假定无第0行第0列)的地址是____。

A.2086

B.2032

C.2068

D.答案A,B,C都不对

5.广义表(a,(b),c,(d,(e)))的表尾是____。

A.(d,(e))

B.(d,(e)))

C.(b),c,(d,(e))

D.((b),c,(d,(e)))

6.____是"Yu**Jia**Shan"的子串。

A.Yu

B."jia"

C."**Shan"

D."YuJiaShan"

7.无向完全图的邻接矩阵是____矩阵。

A.对称

B.上三角

C.下三角

D.稀疏

8.有n(n>0)个结点的完全二叉树的深度是____。

A.?log2(n)+1?

B.?log2(n)-1?

C.?log2(n)-1?

D.?log2(n)+1?

9.与中缀表达式a-b/c+d等价的前缀表达式是____。

A.-a+/bcd

B./-+bcd

C.+-/bcd

D.abcd-/+

10.对有3600个记录的索引顺序表(分块表)进行查找,最理想的块长为____。

A.1800

B.60

C.1200

D.?log2 3600?

11.对n个元素的表作堆排序,在最坏情况下,算法的时间复杂度为____。

A.O(log2 n)

B.O(nlog2 n)

C.O(n2)

D.O(2n )

二、填空题(每空1分,共11分)

1.一个算法具有5个特性:__________________、__________________、________________、有零个

或多个输入、有一个或多个输出。

2.设长度为n的线性表顺序存贮,若在它的第i-1和第i个元素之间插入一个元素, 共需移动

_________ 个元素(1

3.一个字符串中 __________________________ 称为该串的子串。

4.树中结点A的 ____________________ 称为结点A的度。

5.一棵深度为4的二叉树最多有 _______ 个结点。

6.具有10个顶点的无向图,边的总数最多为 _____________ 。

7.顺序查找n个元素的顺序表,当不使用监视哨时,若查找成功,比较关键字的次数最多为 ____ 次;若查找失败,比较关键字的次数为 _____ 次。

8.折半查找有序表( 2,4,6,12,20,28,38,50,70,100 ),若查找表中元素12,它依次与表中元素

___________________ 比较大小。

三、回答下列问题 (每小题5分,共10分)

1.线性表的存储结构,在什么情况下采用链接表(如:单链表)结构?为什么?

2.空格串与空串有区别? 举例说明之。

四、试画出下列存储结构图(每小题5分,共20分)

1.试画出下列稀疏矩阵以列序为主序的三元组表。

2.试画出下列二叉树的中序线索二叉树存储结构图。

3.试用孩子兄弟(左孩子右兄弟)表示法画出下列树的存储结构图。

4.试画出下列有向网的逆邻接表。

五、求解下列问题(每小题6分,共24分)

1.已知二叉树的前序遍历序列和中序遍历序列分别是:

B,A,C,D,F,E,G和D,C,A,F,G,E,B,

试画出该二叉树。

2.试按表(25,15,19,24,20,5,16,45,40,38)中元素的排列次序,将所有元素插入一棵初始为空的二叉

排序树中,使之仍是一棵二叉排序树。(1)试画出插入完成之后的二叉排序树;(2)若查找元素17,它将依次与二叉排序树中哪些元素比较大小?(3)假设每个元素的查找概率相等,试计算该树的平均查找长度 ASL;(4)对该树进行中序遍历,试写出中序遍历序列。

3.试用权集合{4,6,5,12,2,1,13},构造赫夫曼(Huffman)树,(1)列出构造过程, (2)分别计算该赫夫

曼树的路径长度和带权路径长度。

4.找出下面网络的最小生成树:

六、执行下面的C程序,指出输出结果。(8分)

#include

#include

struct node

{ char data;

struct node *next;

};

void link_list(struct node *p)

{ while(p!=NULL)

{ printf("%c",p->data); p=p->next;

}

printf("\n");

}

main( )

{ char ch;

struct node *q,*p,*f,*head=NULL;

for (ch='A';ch<'F';ch++)

{ p=(struct node *)malloc(sizeof(struct node));

p->data=ch; p->next=head; head=p; link_list(p);

}

p=head; head=NULL;

while(p!=NULL)

{ q=p; p=p->next; q->next=head; head=q; f=head;

while(f->next!=NULL)

{link_list(head); f=f->next->next;

}

}

}

七、算法设计(算法中必须有注释,每小题8分,共16分)

1.设n个元素的线性表顺序存储在一维数组 st[1..maxlen] 的前n个位置上,试写出算法:删除表中

第i(1≤i≤n)个元素。

2.设Head为带表头结点的单链表的头指针,试写出算法:若为非空表,则输出:最大结点和最小结点的

值(data值);否则,输出:“Empty list”。

《数据结构》试题(模三)

一、选择题(从下列各题的4个备选答案中选出1至2个正确答案,将其代号(A,B,C,D)写在下表中,答题

写在其它地方无效;每小题1分,共15分)

1.由

A.不同类型的数据项

B.不同类型的数据元素

C.相同类型的数据项

D.相同类型的数据元素

2.____是线性表。

A.(孔子,诸葛亮,曹雪芹)

B.{A,B,C,D}

C.{10,11,12,13,14}

D.(1,2,3,...)

3.____ 是表示线性数据结构的。

A.循环链表

B.邻接多重表

C.孩子链表

D.单链表

4.将线性表的数据元素以____结构存放, 查找一个数据元素所需的时间不依赖于表的长度。

A.循环双链表

B.哈希(Hash)表

C.一维数组

D.单链表

5.设数组A[1..8,1..10]的基地址为4000, 每个元素占2个存储单元,若以列序为主序顺序存储,则元素

A[4,7]的存储地址是____。(假定无第0行第0列元素)

A.4072

B.4104

C.4102

D.4074

6.设依次进入一个栈的元素序列为c,a,b,d,不可得到出栈的元素序列有_____。

A.a.b,c,d

B.a,d,c,b

C.b,a,d,c

D.c,d,a,b

7.___ 又是一棵满二叉树。

A.二叉排序树

B.深度为5有31个结点的二叉树

C.有15个结点的完全二叉树

D.哈夫曼(Huffman)树

8.深度为k的满二叉树有____个分枝结点。

A.2k-1

B.2k-1-1

C.2k+1

D.2k-1+1

9.具有n(n>0)个结点的完全二叉树的深度为_____。

A.?log2(n)?

B.?log2(n)?+1

C.?log2(n+1)?

D.?log2(n+1)?

10.折半查找20个记录的有序表,若查找失败,比较关键字的次数____。

A.最多为6

B.最多为5

C.最少为3

D.最少为4

11.折半查找有序表(2,5,8,20,25,36,40,60),若查找元素60,需依次与

表中元素____进行比较。

A.25,40,60

B.25,40

C.20,36,40,60

D.20,36,40

12.查找哈希(Hash)表,解决冲突的的方法有____。

A.除留余数法

B.线性探测再散列法

C.直接地址法

D.链地址法

13.对有10个记录的表作简单选择排序,需要比较___次关键字。

A.100

B.45

C.50

D.90

14.对有n个记录的表作快速排序,在最坏情况下,算法的时间复杂度是____。

A.O(n)

B.O(n2)

C.O(nlog2n)

D.O(n3)

15.一个排序算法时间复杂度的大小____有关。

A.与所需比较关键字的次数

B.与该算法的稳定性

C.不与所需移动记录的数目

D.与所需辅助存储空间的大小

二、画图题(每小题4分,共20分)

1.依次输入元素X,Y,Z,插入到一个初始状态为空的链式栈中,试画出空的链式栈和每插入一个元素之后的链式栈示意图。

2.试用双亲表示法画出下列树T的存储结构图。

3.试画出有3行4列元素的二维数组B的以列序为主序的顺序存储结构图。

4.试画出下列图的邻接表。

5.已知一棵二叉树的前序遍历序列和中序遍历序列分别是:

I,A,B,E,F,G,C,H,D和A,E,F,B,I,G,H,C,D

试画出该二叉树。

三、求解问题(每小题7分,共28分)

1.用算符优先法求下列算术表达式的值,试简要说明求值过程,画出操作数栈和运算符栈的主要变化过

程。

12+20/(10-2*3)

2.给定电文(文本):

F F A A A B B B A A A B B C C C D E

G G G

试为字符A、B、C、D、E、F、G设计哈夫曼(Huffman)编码:(1)画出相应的哈夫曼树,列出各字符的哈夫曼码;(2)计算该哈夫曼树的带权路径长度。

3.假定后序遍历二叉树的结果是A,C,B,(1)试画出所有可得到这一结果的不同形态的二叉树;(2)分别

写出这些二叉树的中序遍历序列。

4.假定对20个记录的表作折半查找,(1)试画出描述折半查找过程的判定树;(2)若每个记录的查找概

率相等,试计算查找成功时的平均查找长度。

四、分析算法回答问题(每小题10,共20分)

1.算法(C函数)

int suanfan(int n)

{ int i,j,sum=0;

for (i=0;i<=n;i++)

{ for (j=i;j

printf("i=%d,j=%d,sum=%d\n",i,j,sum);

}

return sum;

}

试回答问题:

(1)"j

(2)"sum++;"共执行多少次?

(3)算法的时间复杂度是多少?

(4)假定n=4,算法的输出结果是什么?(5)假定n=4,算法的返回值是多少?

2.设二叉树T的存储结构为二叉链表,结点结构定义如下:

struct node

{char data; //data为字符型

struct node *lchild,*rchild; //指向左右孩子的指针

};

设root为二叉树T的根指针,(1)对二叉树T执行算法traversal(root),试指出其输出结果;(2)假定二叉树T共有n个结点,试分析算法traversal(root)的时间复杂度。

算法(C函数)如下:

void traversal(struct node *root)

{if(root)

{ printf("%c",root->data);

traversal(root->lchild);

printf("%c",root->data);

traversal(root->rchild);

}

}

五、设计算法:输入一个m*n的整数矩阵,如果各个元素互不相同,则输出信息"没有重码!";否则输出

信息"有重码:"和重码值(相同的元素)。

1.用C语言写出所用数据结构的类型定义和算法;

2.分析算法的时间复杂度。

(共17分)

《数据结构》试题(模四)

一、单项选择题(本大题共10小题,每小题1分,共计10分)

1.适合于对动态查找表进行高效率查找的组织结构为( )

A、有序表

B、分块有序表

C、二叉排序树

D、线性链表

2.若数据的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为( )

A、顺序存储结构

B、散列存储结构

C、链式存储结构

D、索引存储结构

3.在已知待排序文件已基本有序的前提下,效率最高的排序方法是( )

A、直接插入排序

B、简单选择排序

C、快速排序

D、归并排序

4.栈和队列的共同特点是( )

A、都是先进后出

B、都是先进先出

C、没有共同点

D、只允许在端点处插入和删除元素5.计算机算法指的是( )

A、计算机程序

B、解决问题的计算方法

C、查找排序算法

D、解决问题的有限指令序列

6.任一棵二叉树的叶结点在先序,中序,后序遍历序列中的相对次序( )

A、不发生变化

B、发生变化

C、不能确定

D、以上都不对

7.用容量为m的数组表示一循环队列,front,rear分别是队头、队尾指针,则队列中当前元素的个数为( )

A、(rear-front+m) mod m

B、rear-front+1

C、rear-front-1

D、rear-front 8.设sub(s,i,j)的功能是返回串s从第i个字符开始长度为j的子串,scopy(s,t)的功能是复制串t到s,若字符串s=`SCIENCESTUDY’,则调用scopy(p,sub(s,1,7))后得到( )

A、p=`SCIENCE’

B、p=`STUDY’

C、s=`SCIENCE’

D、

s=`STUDY’

9.一批数据用顺序存储结构,第一个元素的存储地址是200,且每个元素长度为2,则第5个元素的存储地址是( )

A、210

B、208

C、200

D、220

10.在数据结构中,从逻辑上可以把数据结构分成( )

A、动态结构和静态结构

B、紧凑结构和非紧凑结构

C、线性结构和非线性结构

D、内部结构和外部结构

二、填空题(本大题共10小题,每小题1分,共计10分)

1.在哈希查找中,若哈希函数是H(key)=key mod p,则p值应取。

2.对关键字序列(52,80,63,44,47,89)进行一趟快速排序之后得到的结果

为。

3.在单链表中,删除p所指结点的后继结点的操作命令是。

4.二叉树第K层最多有个结点。

5.顺序栈栈顶的位置是随着操作而变化的。

6.设有向图用邻接矩阵存储,计算第i个结点入度的方法是。

7.对1000个数据元素,希望用最快的速度挑选出前10个最大元素,最好选用的排序方法。

8.将n阶对称矩阵只存储下三角部分,共需个存储空间。

9.3个结点构成的二叉树共有种不同的形态。

10.数据的逻辑结构是独立于计算机的,它与数据的无关。

三、判断下列叙述是否正确(本大题共5小题,每小题1分,共5分)

1.字符串的长度是指串中不同字符的个数。

2.存在这样的二叉树,对它采用任何次序遍历结果都相同。

3.无向图的邻接矩阵一定是对称矩阵,而有向图的邻接距阵一定是非对称矩阵。

4.完全二叉树中,若某个结点没有左孩子,则该结点一定是叶子结点。

5.线性表的逻辑顺序与存储顺序总是一致的。

四、算法应用题(本大题共5小题,每小题4分,共20分)

1.用带头结点的循环链表表示队列,只设尾指针rear,如图1所示,写出将s所指结点插入队列的操作语句。

图1

2.对图2所示的加权无向图,用prim算法求最小生成树,设从结点a开始,画出构造过程。

图2

3.图3所示的有向无环图,写出所有的拓扑序列。

图3

4.设数据的初始序列为(17,23,60,48,11,73,34),用简单选择排序方法写出每一趟排序结果。

5.设有12个元素的有序表用顺序存储结构,画出二分法(折半)查找的判定树,并求出查找成功时的平均查找长度ASL。

五、编写算法(本题5分)

设n个整数存于数组x中,写一算法将所有偶数移到奇数之前,要求时间复杂度为O(n)。

《数据结构》试题(模五)

一、填空题(每空1分,共10分)

1.从逻辑关系来讲,数据结构主要分为四类,它们是()、()、()以及()。2.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印缓冲区,该缓冲区应该是一个()结构。

3.深度为k的二叉树中,所含叶子的个数最多为()。

4.有向图若存在结点的拓扑序列当且仅当该有向图不存在()。

5.折半查找要求线性表中的记录必须(),并且必须采用()存储。

6.在已知待排序记录已基本有序的前提下,效率最高的排序方法是()。

二、单项选择题(每题1分,共10分)

1.算法在发生非法操作时可以作出处理的特性称为()。

A 健壮性

B 正确性

C 有穷性

D 可行性

2.假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。则表示该遗产继承关系的最合适的数据结构应该是()。

A 树

B 图

C 线性表

D 集合

3.设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是

()。

A 6

B 4

C 3

D 2

4.在一个单链表中,已知q所指结点是p所指结点的直接前驱,若在q和p之间插入s所指结点,则执行()操作。

A s->next=p->next; p->next=s;

B q->next=s; s->next=p;

C p->next=s->next; s->next=p;

D p->next=s; s->next=q;

5.设无向图G=(V, E)和G'=(V', E'),如果G'是G的生成树,则下面的说法中错误的是()。

A G'为G的子图

B G '为G的连通分量

C G'为G的极小连通子图且V = V '

D G '是G的一个无环子图

6.对任何一棵二叉树T,如果其终端终点的个数为n0,度为2的结点个数为n2,则()。

A n0=n2-1

B n0=n2

C n0=n2+1

D 没有规律

7.二叉排序树中,最小值结点的()。

A左指针一定为空B右指针一定为空C左、右指针均为空D左、右指针均不为空

8.一组记录的关键码为{46,79,56,38,40,84},则利用快速排序的方法,以第一个记录为基准得到一次划分结果为()。

A {40,38,46,56,79,84}

B {40,38,46,79,56,84}

C {40,38,46,84,56,79}

D {84,79,56,46,40,38}

9.散列技术中的冲突指的是()。

A 两个元素具有相同的序号

B 两个元素的键值不同,而其他属性相同

C 数据元素过多

D 不同键值的元素对应于相同的存储地址

10.按照堆的定义,下面的序列()是堆。

A 403537201418710

B 40351820143010

C 23121517

D 2312151311

三、 判断题(你认为正确的,请在前面的括号内打√,错误的打?。每题1分,共10分)

()1.线性表的顺序存储结构优于链接存储结构。 ()2.空串与空格串是相同的。

()3.栈可以作为实现过程调用的一种数据结构。 ()4.二叉树是度为2的树。

()5.由树转换成二叉树,其根结点的右子树总是空的。 ( )6.一个图具有生成树的必要条件是该图必须是连通图。 ( )7.二叉排序树的查找和折半查找的时间性能相同。

( )8.如果某种排序算法是不稳定的,则该排序方法没有实际应用价值。

( )9.对任意一个图,从某顶点出发进行一次深度优先或广度优先遍历,可访问图的所有顶点。 ( )10.对n 个记录的集合进行快速排序,所需要的附加空间是Ο(n )。 四、综合应用题(共55分)

1.设n 个人围坐在一个圆桌周围,现在从第s 个人开始报数,数到第m 个人,让他出局;然后从出局的下一个人重新开始报数,数到第m 个人,再让他出局,……,如此下去,直到所有人全部出列为止。下面要解决的Josephus 问题是:对于任意给定n ,s 和m ,求出这n 个人的出局序列。请以n=9,s=1,m=5为例,人工模拟Josephus 的求解过程。(即给出出局人的顺序)(5分)

2.已知二叉树的中序和后序序列分别为CBEDAFIGH 和CEDBIFHGA ,试构造该二叉树。(6分) 3.下图是一个无向网,写出prim 算法的求借思想,并给出使用prim 算法构造最小生成树的过程。

(7分)

4.将数列(24,15,18,

出最后的结果。(6分)

5.用直接插入排序方法对下列给定的键值进行排序,请写出每一趟排序的结果。(6分)

61,82,104,55,116,77,59

,98,81

6.关键码集合为 {25,37,52,43,84,99,120,15,26,11,70,82},散列表的表长为12,散列函数为H (key )=key mod 12,试用线性探测法处理冲突,构造闭散列表。(8分)

7.对于给定的一组权值W ={2,1,4,5,7,3,4,9},试构造相应的哈夫曼树,并计算它的带权路径长度。(8分)

8.试给出下图的邻接矩阵和邻接表存储示意图,若从顶点1出发对该图进行遍历,分别给出一个按深度优先遍历和广度优先遍历的顶点序列。(9

五、 写出图的深度优先遍历算法的伪代码。(8分)

六、 试编写在带头结点的单链表上第i 个位置插入元素x 的算法。(7分)

《数据结构》试题(模六)

第8题图

一、填空题(每空1分,共10分)

1.算法在发生非法操作时可以作出处理的特性称为()。

2.在单链表中,除了头结点以外,任一结点的存储位置由()指示。

3.具有100个结点的完全二叉树的叶子结点数为()。

4.已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。

5.()可作为实现递归函数调用的一种数据结构。

6.数组通常只有两种运算:()和(),这决定了数组通常采用()结构来实现存储。

7.在索引表中,每个索引项至少包含()和()等信息。

二、判断题(你认为正确的,请在前面的括号内打√,错误的打?,并改正。每题2分,共10分)1.空串与空格串是相同的。

2.线性结构的基本特征是:每个元素有且仅有一个直接前驱和一个直接后继。

3.使用三元组表存储稀疏矩阵的元素,有时并不能节省存储空间。

4.B—树是一种动态索引结构,它既适用于随机查找,也适用于顺序查找。

5.设有键值序列(k1, k2,…, k n),当i>n/2时,任何一个子序列(k i, k i+1,… , k n)一定是堆。

三、单选题(请把你认为正确的答案填入括号内,每小题1分,共10分)

1.线性表采用链接存储时,其地址()。

A 必须是连续的

B 部分地址必须是连续的

C 一定是不连续的

D 连续与否均可以

2.若链表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则采用()存储方法最节省时间。

A 单链表

B 带头指针的单循环链表

C 双链表

D 带尾指针的单循环链表

3.设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是()。

A 6

B 4

C 3

D 2

4.对特殊矩阵采用压缩存储的目的主要是为了()。

A 表达变得简单

B 对矩阵元素的存取变得简单

C 去掉矩阵中的多余元素

D 减少不必要的存储空间

5.设二叉树有n个结点,则其深度为()。

A n-1

B n

C ??n2

log+1 D 不能确定

6.线索二叉树中某结点R没有左孩子的充要条件是()。

A R.lchild=NULL

B R.ltag=0

C R.ltag=1

D R.rchild=NULL

7.含n个顶点的连通图中的任意一条简单路径,其长度不可能超过()。

A 1

B n/2

C n-1

D n

8.既希望较快的查找又便于线性表动态变化的查找方法是()。

A 顺序查找 B折半查找 C散列查找 D 索引顺序查找

9.下面的说法中,不正确的是()。

A 广义表是一种多层次的结构

B 广义表是一种非线性结构

C 广义表是一种共享结构

D 广义表是一种递归表

10.设散列表表长m=14,散列函数H(k)=k mod11。表中已有15、38、61、84四个元素,如果用线性探侧法处理冲突,则元素49的存储地址是()。

A 8

B 3

C 5

D 9

四、简单应用题(47分)

1.一棵非空的二叉树其前序遍历序列和后序遍历序列正好相反,画出这棵二叉树的形状。(4分)2.分析以下各程序段,并用大O记号表示执行时间。(6分)

(1)for (i=1;i<=n;i++) (2)i=1;k=0;

for ( j=1;j<=i;j++) while (i

for (k=1;k<=j;k++) {k=k+10*i; i++;}

x++;

3.已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是什么?(3分)4.用起泡排序方法对下列给定的键值进行排序,请写出每一趟排序的结果。(9分)

61,82,104,55,116,77,59,98,81

5.设权值集合:K={15,25,26,4,5,20,3,12,2},(1)构造一棵huffman树;(2)求出WPL;(10分)

6.已知散列函数H(k)=k mod 12,键值序列为(25, 37, 52, 43, 84, 99, 120, 15, 26, 11, 70, 82),采用拉链法处理冲突,试构造开散列表,并计算查找成功的平均查找长度。(12分)

7.已知一个AOV网如图所示,写出所有拓扑序列。(3分)

五、阅读下面程序(8分)

以下伪代码是一个广度优先遍历算法,请给出该算法在下图上执行BFS(G,v1)的结果,指出其中

的错误产生原因,如何修改? void BFS(ALGraph*G,int k) { // G是图的邻接表,k是顶点序号

InitQueue(&Q); //初始化队列Q

EnQueue(&Q,k); //k入队

while (!QueueEmpty(&Q)){

i=DeQueue(&Q); //队头元素出队

visited[i]=1; //设置访问标记

访问顶点vi;

for (p=G->adjlist[i].firstedge[i];p;p=p->next) //依次遍历顶点vi的相邻顶点vj(设p->adjvex=j) if (!visited[p->adjvex])

EnQueue(&Q,p->adjvex); //顶点vj的序号入队}

}

《数据结构》试题(模七)

第五题图

第7题图

一、选择题(本大题共5题,每小题2分,共10分)

1.对一个算法的评价,不包括如下[ 1 ]方面的内容。

A.健壮性和可读性

B.并行性

C.正确性

D.时空复杂度.

2.在带有头节点的单链表HL中, 要向第一个结点的前面插入一个p节点,则执行[ 2 ]。

A.HL->next=p;p->next=NULL;

B.p->next=HL->next;HL->next=p;

C.HL.next=p;p.next=NULL;

D.p.next=HL.next;HL.next=p;

3.顺序存储的线性表中要在第i(0〈=i〈=n〉个元素之后插入一个元素,需要将[ 3 ]元素向后移动一个位置。

A.i+1…n B. i…n-1 C.i…n D.i-1…n

4.若栈的类型描述为

Typedef struct {

SElemType *base;

SElemType *top;

int stacksize;

}Sqstack;

Sqstack s;

则栈满条件为[ 4 ]

A.s.top>=stacksize

B.s.base>=stacksize

C.s.base-s.top>= stacksize

D. s.base+s.top>= stacksize

5.若循环队列的存储结构为:

#define MAXQSIZE 100

Typedef struct

{ QElemtype *base;

Int front;

Int rear;

}SQueue;

SQueue Q;

队空条件[ 5 ]

A.Q.front=Q.rear

B.Q.front-Q.rear==0

C.Q.rear==Q.front

D.Q.front==0

二、填空题(本大题共10题,每小题2分,共20分)

1.在长度为n的线性表中插入一个元素时所需移动元素次数的期望值 [ 1 ] 。

2.若A为n阶对称方阵,按行优先的顺序压缩存储到一维数组S中,则S[k]和A[i][j]之间存在

一一对应的关系,1<=i,j<=n请给出k与i,j(i>j)之间的关系 [ 2 ] 。

3.算法设计的四个基本要求是[ 3 ] , [ 4 ] ,[ 5 ],[ 6 ]。

4.如果二维数组A的首元素A[0][0]的存储位置为LOC(0,0),每个元素占L个存储单元,给出

A[i][j]的存储位置 [ 7 ]。

5.深度为k的二叉树最大结点数为[ 8 ]。

6.静态查找表的顺序查找长度ASL= [ 9 ] ?若每个记录的查找概率相等,即P i=1/n,则查找成

功的平均查找长度 [ 10 ] ?

三、简答题(本大题共5题,每小题4分,共20分)

1.什么是满二叉树?什么是完全二叉树?

2.若一颗二叉树的先序遍历序列为ABDECFJKI,中序遍历序列为DBEAJFKCI试画出该二叉树。

3.网络的最小生成树有那两种算法?

4.什么是二叉排序树?给定一组权值{23,45,12,56,37,79,64,5}按先后顺序取值画出二叉排序树。

5.什么是哈夫曼树?给定一组权值{23,45,12,56,37,79,64,5}画出哈夫曼树,要求过程。

四、简答题(本大题共3题,每小题10分,共 30分)

1.给出如下一个图,请写出所有可能的拓扑序列。

2.给定如下形式的树,请画出双亲表示法存储图,孩子表示法存储图,用左孩子右兄弟方法将其转换成二叉树。

3.若已知二叉树结点的值域为data ,左、右指针为lchild ,rchild 试给出二叉树的二叉链表的存储表示。

五、 算法设计

(本大题共2题,每小题10分,共20分)

1.已知

typedef struct{ keytype key; …

}ElemType; typedef struct {

ElemType r[MAX]; int length; }sqlist;

试给出插入排序法的程序。

2.已知线性表的链式存储结构 Typedef struct LNode { ElemType data; Struct LNode *next; }LNode,*linklist;

试给出在表L 的第i 个位置前插入元素e 的算法

算法设计题答案

1 2 5

6 3

4 7

9

11

8

数据结构课程实验指导书

数据结构实验指导书 一、实验目的 《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。本课程较为系统地论述了软件设计中常用的数据结构以及相应的存储结构与实现算法,并做了相应的性能分析和比较,课程内容丰富,理论系统。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: 1)理论艰深,方法灵活,给学习带来困难; 2)内容丰富,涉及的知识较多,学习有一定的难度; 3)侧重于知识的实际应用,要求学生有较好的思维以及较强的分析和解决问题的能力,因而加大了学习的难度; 根据《数据结构》课程本身的特性,通过实验实践内容的训练,突出构造性思维训练的特征,目的是提高学生分析问题,组织数据及设计大型软件的能力。 课程上机实验的目的,不仅仅是验证教材和讲课的内容,检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: (1)加深对课堂讲授内容的理解 实验是对学生的一种全面综合训练。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实验题中的问题比平时的习题复杂得多,也更接近实际。实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变" 活" ,起到深化理解和灵活掌握教学内容的目的。 不少学生在解答习题尤其是算法设计时,觉得无从下手。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出

现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 (2) 培养学生软件设计的综合能力 平时的练习较偏重于如何编写功能单一的" 小" 算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。 通过实验使学生不仅能够深化理解教学内容,进一步提高灵活运用数据结构、算法和程序设计技术的能力,而且可以在需求分析、总体结构设计、算法设计、程序设计、上机操作及程序调试等基本技能方面受到综合训练。实验着眼于原理与应用的结合点,使学生学会如何把书本上和课堂上学到的知识用于解决实际问题,从而培养计算机软件工作所需要的动手能力。 (3) 熟悉程序开发环境,学习上机调试程序一个程序从编辑,编译,连接到运行,都要在一定的外部操作环境下才能进行。所谓" 环境" 就是所用的计算机系统硬件,软件条件,只有学会使用这些环境,才能进行 程序开发工作。通过上机实验,熟练地掌握程序的开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆语法错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,尽快掌握程序调试方法是非常重要的。分析问题,选择算法,编好程序,只能说完成一半工作,另一半工作就是调试程序,运行程序并得到正确结果。 二、实验要求 常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实验题目的远不如从实际问题中的复杂程度度高,但为了培养一个软件工作者所应具备的科学工作的方法和作风,也应遵循以下五个步骤来完成实验题目: 1) 问题分析和任务定义 在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。本步骤强调的是做什么?而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的

数据结构实验指导书(2016.03.11)

《数据结构》实验指导书 郑州轻工业学院 2016.02.20

目录 前言 (3) 实验01 顺序表的基本操作 (7) 实验02 单链表的基本操作 (19) 实验03 栈的基本操作 (32) 实验04 队列的基本操作 (35) 实验05 二叉树的基本操作 (38) 实验06 哈夫曼编码 (40) 实验07 图的两种存储和遍历 (42) 实验08 最小生成树、拓扑排序和最短路径 (46) 实验09 二叉排序树的基本操作 (48) 实验10 哈希表的生成 (50) 实验11 常用的内部排序算法 (52) 附:实验报告模板 .......... 错误!未定义书签。

前言 《数据结构》是计算机相关专业的一门核心基础课程,是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础,也是很多高校考研专业课之一。它主要介绍线性结构、树型结构、图状结构三种逻辑结构的特点和在计算机内的存储方法,并在此基础上介绍一些典型算法及其时、空效率分析。这门课程的主要任务是研究数据的逻辑关系以及这种逻辑关系在计算机中的表示、存储和运算,培养学生能够设计有效表达和简化算法的数据结构,从而提高其程序设计能力。通过学习,要求学生能够掌握各种数据结构的特点、存储表示和典型算法的设计思想及程序实现,能够根据实际问题选取合适的数据表达和存储方案,设计出简洁、高效、实用的算法,为后续课程的学习及软件开发打下良好的基础。另外本课程的学习过程也是进行复杂程序设计的训练过程,通过算法设计和上机实践的训练,能够培养学生的数据抽象能力和程序设计能力。学习这门课程,习题和实验是两个关键环节。学生理解算法,上机实验是最佳的途径之一。因此,实验环节的好坏是学生能否学好《数据结构》的关键。为了更好地配合学生实验,特编写实验指导书。 一、实验目的 本课程实验主要是为了原理和应用的结合,通过实验一方面使学生更好的理解数据结构的概念

数据结构试卷带答案

数据结构试卷(一) 一、选择题(20分) 1.组成数据的基本单位是( 1.C )。 (A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量 2.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是( C )。 (A) 线性结构(B) 树型结构(C) 图型结构(D) 集合 3.数组的逻辑结构不同于下列(D)的逻辑结构。 (A) 线性表(B) 栈(C) 队列(D) 树 4.二叉树中第i(i≥1)层上的结点数最多有(C)个。 (A) 2i (B) 2i(C) 2i-1(D) 2i-1 5.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为(.A )。 (A) p->next=p->next->next (B) p=p->next (C) p=p->next->next (D) p->next=p 6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是(.C )。 (A) 6 (B) 4 (C) 3 (D) 2 7.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为(C )。 (A) 100 (B) 40 (C) 55 (D) 80 8.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为(8.B (A) 3 (B) 4 (C) 5 (D) 1 9.根据二叉树的定义可知二叉树共有(B)种不同的形态。 (A) 4 (B) 5 (C) 6 (D) 7 10.设有以下四种排序方法,则(B )的空间复杂度最大。 (A) 冒泡排序(B) 快速排序(C) 堆排序(D) 希尔排序 二、填空题(30分) 1.设顺序循环队列Q[0:m-1]的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元 素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F =____________;。 2.设线性表中有n个数据元素,则在顺序存储结构上实现顺序查找的平均时间复杂度为___________, 在链式存储结构上实现顺序查找的平均时间复杂度为___________。 3.设一棵二叉树中有n个结点,则当用二叉链表作为其存储结构时,该二叉链表中共有________个指 针域,__________个空指针域。 4.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点B,则在结点A的后面插入结点 B的操作序列为______________________________________。 5.设无向图G中有n个顶点和e条边,则其对应的邻接表中有_________个表头结点和_________个表 结点。 6.设无向图G中有n个顶点e条边,所有顶点的度数之和为m,则e和m有______关系。 7.设一棵二叉树的前序遍历序列和中序遍历序列均为ABC,则该二叉树的后序遍历序列为__________。 8.设一棵完全二叉树中有21个结点,如果按照从上到下、从左到右的顺序从1开始顺序编号,则编 号为8的双亲结点的编号是___________,编号为8的左孩子结点的编号是_____________。 9.下列程序段的功能实现子串t在主串s中位置的算法,要求在下划线处填上正确语句。 int index(char s[ ], char t[ ]) { i=j=0; while(i

数据结构试题及答案(免费)

一、单选题(每题 2 分,共20分) 1. 1.对一个算法的评价,不包括如下(B )方面的内容。 A.健壮性和可读性B.并行性C.正确性D.时空复杂度 2. 2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结 点,则执行( )。 A. p->next=HL->next; HL->next=p; B. p->next=HL; HL=p; C. p->next=HL; p=HL; D. HL=p; p->next=HL; 3. 3.对线性表,在下列哪种情况下应当采用链表表示?( ) A.经常需要随机地存取元素 B.经常需要进行插入和删除操作 C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变 4. 4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是 ( C ) A. 2 3 1 B. 3 2 1 C. 3 1 2 D. 1 2 3 5. 5.AOV网是一种()。 A.有向图B.无向图C.无向无环图D.有向无环图 6. 6.采用开放定址法处理散列表的冲突时,其平均查找长度()。 A.低于链接法处理冲突 B. 高于链接法处理冲突 C.与链接法处理冲突相同D.高于二分查找 7.7.若需要利用形参直接访问实参时,应将形参变量说明为()参数。 A.值B.函数C.指针D.引用 8.8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具 有相同的()。 A.行号B.列号C.元素值D.非零元素个数 9.9.快速排序在最坏情况下的时间复杂度为()。 A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2) 10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( )。 A. O(n) B. O(1) C. O(log2n) D. O(n2) 二、二、运算题(每题 6 分,共24分) 1. 1.数据结构是指数据及其相互之间的______________。当结点之间存在M 对N(M:N)的联系时,称这种结构为_____________________。 2. 2.队列的插入操作是在队列的___尾______进行,删除操作是在队列的 ____首______进行。 3. 3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则 表示栈满的条件是___top==0___(要超出才为满)_______________。 4. 4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度 为_________,在表尾插入元素的时间复杂度为____________。

实验指导-数据结构B教案资料

实验指导-数据结构B

附录综合实验 1、实验目的 本课程的目标之一是使得学生学会如何从问题出发,分析数据,构造求解问题的数据结构和算法,培养学生进行较复杂程序设计的能力。本课程实践性较强,为实现课程目标,要求学生完成一定数量的上机实验。从而一方面使得学生加深对课内所学的各种数据的逻辑结构、存储表示和运算的方法等基本内容的理解,学习如何运用所学的数据结构和算法知识解决应用问题的方法;另一方面,在程序设计方法、C语言编程环境以及程序的调试和测试等方面得到必要的训练。 2、实验基本要求: 1)学习使用自顶向下的分析方法,分析问题空间中存在哪些模块,明确这些模块之间的关系。 2)使用结构化的系统设计方法,将系统中存在的各个模块合理组织成层次结构,并明确定义各个结构体。确定模块的主要数据结构和接口。 3)熟练使用C语言环境来实现或重用模块,从而实现系统的层次结构。模块的实现包括结构体的定义和函数的实现。 4)学会利用数据结构所学知识设计结构清晰的算法和程序,并会分析所设计的算法的时间和空间复杂度。 5)所有的算法和实现均使用C语言进行描述,实验结束写出实验报告。

3、实验项目与内容: 1、线性表的基本运算及多项式的算术运算 内容:实现顺序表和单链表的基本运算,多项式的加法和乘法算术运算。 要求:能够正确演示线性表的查找、插入、删除运算。实现多项式的加法和乘法运算操作。 2、二叉树的基本操作及哈夫曼编码译码系统的实现 内容:创建一棵二叉树,实现先序、中序和后序遍历一棵二叉树,计算二叉树结点个数等操作。哈夫曼编码/译码系统。 要求:能成功演示二叉树的有关运算,实现哈夫曼编码/译码的功能,运算完毕后能成功释放二叉树所有结点占用的系统内存。 3、图的基本运算及智能交通中的最佳路径选择问题 内容:在邻接矩阵和邻接表两种不同存储结构上实现图的基本运算的算法,实现图的深度和宽度优先遍历算法,解决智能交通中的路径选择问题。设有n 个地点,编号为0~n-1,m条路径的起点、终点和代价由用户输入提供,寻找最佳路径方案(例如花费时间最少、路径长度最短、交通费用最小等,任选其一即可)。 要求:设计主函数,测试上述运算。 4、各种内排序算法的实现及性能比较 内容:验证教材的各种内排序算法。分析各种排序算法的时间复杂度。 要求:使用随机数产生器产生较大规模数据集合,运行上述各种排序算法,使用系统时钟测量各算法所需的实际时间,并进行比较。

数据结构实验指导书

《数据结构》实验指导书 实验一顺序表 实验目的: 熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作。 实验要求: 了解并熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作的实现和应用。 实验内容: 1、编写程序实现在线性表中找出最大的和最小的数据元素,并符合下列要求: (1)设数据元素为整数,实现线性表的顺序存储表示。 (2)从键盘输入10个数据元素,利用顺序表的基本操作建立该表。 (3)利用顺序表的基本操作,找出表中最大的和最小的数据元素(用于比较的字段为整数)。 2、编写一个程序实现在学生成绩中找出最高分和最低分,并符合下列要求: (1)数据元素为学生成绩(含姓名、成绩等字段)。 (2)要求尽可能少地修改第一题的程序来得到此题的新程序,即要符合第一题的所有要求。(这里用于比较的字段为分数) 实验二链表 实验目的: 熟悉链表的逻辑特性、存储表示方法的特点和链式表的基本操作。 实验要求: 了解并熟悉链式表的逻辑特性、存储表示方法和链式表的基本操作的实现和应用。

实验内容: 1、编写一个程序建立存放学生成绩的有序链表并实现相关操作,要求如下: (1)设学生成绩表中的数据元素由学生姓名和学生成绩字段组成,实现这样的线性表的链式存储表示。 (2)键盘输入10个(或若干个,特殊数据来标记输入数据的结束)数据元素,利用链表的基本操作建立学生成绩单链表,要求该表为有序表 并带有头结点。(用于比较的字段为分数)。 (3)输入关键字值x,打印出表中所有关键字值<=x的结点。(用于比较的关键字字段为分数)。 (4)输入关键字值x,删除表中所有关键字值<=x的结点。(用于比较的关键字字段为分数)。 (5)输入关键字值x,并插入到表中,使所在的链表仍为有序表。(用于比较的字段为分数)。 实验三栈的应用 实验目的: 熟悉栈的逻辑特性、存储表示方法和栈的基本操作。 实验要求: 了解并熟悉栈的逻辑特性、顺序和链式存储表示方法和栈的基本操作的实现和应用。 实验内容: (1)判断一个表达式中的括号(仅有一种括号,小、中或大括号) 是否配对。编写并实现它的算法。 (2)用不同的存储方法,求解上面的问题。 (3)* 若表达式中既有小括号,又有大括号(或中括号),且允许 互相嵌套,但不能交叉,写出判断这样的表达式是否合法的算 法。如 2+3*(4-{5+2}*3)为合法;2+3*(4-{5+2 * 3} 、 2+3*(4-[5+2 * 3)为不合法。

数据结构考试题库

绪论 一、填空题 1.数据的逻辑结构被分为集合、(线性结构)、(树形结构)和(图状结构)四种。 2. 物理结构是数据结构在计算机中的表示,又称为(存储结构)。 3. 数据元素的逻辑结构包括(线性)、(树)和图状结构3 种类型,树形结构和图状结构合称为(非线性结构)。 4. (数据元素)是数据的基本单位,(数据项)是数据不可分割的最小单位。 5. 线性结构中元素之间存在(一个对一个)关系,树形结构中元素之间存在(一个对多个)关系,图状结构中元素之间存在(多个对多个)关系。 ? 6.数据结构是一门研究非数值计算的程序设计问题中:计算机的(数据元素)以及它们之间的(关 系)和(运筹)等的学科。 7. 算法的五个重要特性为有穷性、确定性、(输入)、(输出)和(可行性)。 二、选择题 1. 数据的不可分割的基本单位是(D)。 A.元素 B.结点C数据类型D.数据项 *2. 线性表的逻辑顺序与存储顺序总是一致的,这种说法(B)。 A.正确 B.不正确C不确定 D.无法选择 3. 线性结构是指数据元素之间存在一种(D)。 A.一对多关系 B.多对多关系C多对一关系D.—对一关系

4. 在数据结构中,从逻辑上可以把数据结构分成(A)。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C线性结构和非线性结构D.内部结构和外部结构 5. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D)。 A.必须是连续的 B.部分地址必须是连续的 C. 一定是不连续的 D.连续不连续都可以 三、简答题 1. 算法的特性是什么。 答:有穷性确定性可行性有0 或多个输入有 1 或多个输出 线性结构 一、填空题 1?在一个长度为n的线性表中删除第i个元素(1< i产时,需向前移动(n-i)个元素。 2. 从循环队列中删除一个元素时,其操作是(先移动队首指针,后取出元素)。 3?在线性表的单链接存储中,若一个元素所在结点的地址为p,则其后继结点的地址为(p-> next)。 4. 在一个单链表中指针p所指向结点的后面插入一个指针q所指向的结点时,首先把(p->next)的值赋给q->next,然后(q->date)的值赋给p->next。 5. 从一个栈删除元素时,首先取出(栈顶元素),然后再使(栈顶指针)减1。 6. 子串的定位操作通常称做串的(模式匹配)。 7. 设目标T= ‘ abccdcdccba,模式P= ‘ cdc则第(六)次匹配成功。。 8. 顺序栈S 中,出栈操作时要执行的语句序列中有S->top(--);进栈操作时要执行的语句序列中有S->top(++)。

数据结构试题及答案

数据结构试题? 一、?单选题(每题 2 分,共20分) 1.1.???? 对一个算法的评价,不包括如下( B )方面的内容。 A.健壮性和可读性B.并行性 C.正确性 D.时空复杂度 2.2.???? 在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点, 则执行( A )。 A. p->next=HL->next; HL->next=p; B. p->next=HL; HL=p; C. p->next=HL; p=HL; D. HL=p; p->next=HL; 3.3.???? 对线性表,在下列哪种情况下应当采用链表表示?( B ) A.经常需要随机地存取元素 B.经常需要进行插入和删除操作 C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变 4.4.???? 一个栈的输入序列为 1 2 3,则下列序列中不可能是栈的输出序列的是 ( C ) A. 2 3 1 B. 3 2 1 C. 3 1 2 D. 1 2 3 5.5.???? AOV网是一种( D )。 A.有向图 B.无向图 C.无向无环图D.有向无环图 6.6.???? 采用开放定址法处理散列表的冲突时,其平均查找长度( B )。 A.低于链接法处理冲突 B. 高于链接法处理冲突 C.与链接法处理冲突相同 D.高于二分查找 7.7.???? 若需要利用形参直接访问实参时,应将形参变量说明为( D )参数。 A.值 B.函数 C.指针 D.引用 8.8.???? 在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有 相同的( A )。 A.行号B.列号 C.元素值 D.非零元素个数 9.9.???? 快速排序在最坏情况下的时间复杂度为( D )。 A.O(log 2n) B.O(nlog 2 n) C.O(n) D.O(n2) 10.10. 从二叉搜索树中查找一个元素时,其时间复杂度大致为( C )。 A. O(n) B. O(1) C. O(log 2 n) D. O(n2) 二、运算题(每题 6 分,共24分) 1. 1.?数据结构是指数据及其相互之间的_对应关系(联系)。当结点之间存在M对N(M: N)的联系时,称这种结构为图(或图结构)。 2. 2.队列的插入操作是在队列的__队尾___进行,删除操作是在队列的_对头_进行。 3. 3.??当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈 满的条件是_top==0__。 4. 4.???对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为

《数据结构》实验指导

《数据结构》实验指导 (计算机信息大类适用) 实验报告至少包含以下内容: 实验名称 实验目的与要求: 实验内容与步骤(需要你进行细化): 实验结果(若顺利完成,可简单说明;若实验过程中遇到问题,也请在此说明) 收获与体会(根据个人的实际情况进行说明,不得空缺) 实验1 大整数加法(8课时) 目的与要求: 1、线性表的链式存储结构及其基本运算、实现方法和技术的训练。 2、单链表的简单应用训练。 3、熟悉标准模版库STL中的链表相关的知识。 内容与步骤: 1、编程实现单链表的基本操作。 2、利用单链表存储大整数(大整数的位数不限)。 3、利用单链表实现两个大整数的相加运算。 4、进行测试,完成HLOJ(https://www.360docs.net/doc/b412516172.html,) 9515 02-线性表大整数A+B。 5、用STL之list完成上面的任务。 6、尝试完成HLOJ 9516 02-线性表大菲波数。 实验2 栈序列匹配(8课时) 目的与要求 1、栈的顺序存储结构及其基本运算、实现方法和技术的训练。 2、栈的简单应用训练。 3、熟悉标准模版库STL中的栈相关的知识。 内容与步骤: 1、编程实现顺序栈及其基本操作。 2、对于给出的入栈序列和出栈序列,判断2个序列是否相容。即:能否利用栈 将入栈序列转换为出栈序列。 3、进行测试,完成HLOJ 9525 03-栈与队列栈序列匹配。 4、用STL之stack完成上面的任务。 5、尝试完成HLOJ 9522 03-栈与队列胡同。

实验3 二叉排序树(8课时) 目的与要求 1、二叉树的链式存储结构及其基本运算、实现方法和技术的训练。 2、二叉树的遍历方法的训练。 3、二叉树的简单应用。 内容与步骤: 1、编程实现采用链式存储结构的二叉排序树。 2、实现插入节点的操作。 3、实现查找节点的操作(若查找失败,则将新节点插入二叉排序树)。 4、利用遍历算法对该二叉排序树中结点的关键字按递增和递减顺序输出,完成 HLOJ 9576 07-查找二叉排序树。 5、尝试利用二叉排序树完成HLOJ 9580 07-查找Let the Balloon Rise。 实验4 最小生成树(8课时) 目的与要求 1、图的邻接矩阵存储结构及其相关运算的训练。 2、掌握最小生成树的概念。 3、利用Prim算法求解最小生成树。 实验背景: 给定一个地区的n个城市间的距离网,用Prim算法建立最小生成树,并计算得到的最小生成树的代价。要求显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。 内容与步骤: 1、建立采用邻接矩阵的图。 2、编程实现Prim算法,求解最小生成树的代价。 3、尝试利用Prim算法完成:HLOJ 9561 06-图最小生成树。

2017数据结构实验指导书

《数据结构》实验指导书 贵州大学 电子信息学院 通信工程

目录 实验一顺序表的操作 (3) 实验二链表操作 (8) 实验三集合、稀疏矩阵和广义表 (19) 实验四栈和队列 (42) 实验五二叉树操作、图形或网状结构 (55) 实验六查找、排序 (88) 贵州大学实验报告 (109)

实验一顺序表的操作 实验学时:2学时 实验类型:验证 实验要求:必修 一、实验目的和要求 1、熟练掌握线性表的基本操作在顺序存储和链式存储上的实现。 2、以线性表的各种操作(建立、插入、删除等)的实现为重点。 3、掌握线性表的动态分配顺序存储结构的定义和基本操作的实现。 二、实验内容及步骤要求 1、定义顺序表类型,输入一组整型数据,建立顺序表。 typedef int ElemType; //定义顺序表 struct List{ ElemType *list; int Size; int MaxSize; }; 2、实现该线性表的删除。 3、实现该线性表的插入。 4、实现线性表中数据的显示。 5、实现线性表数据的定位和查找。 6、编写一个主函数,调试上述算法。 7、完成实验报告。 三、实验原理、方法和手段 1、根据实验内容编程,上机调试、得出正确的运行程序。 2、编译运行程序,观察运行情况和输出结果。 四、实验条件 运行Visual c++的微机一台 五、实验结果与分析 对程序进行调试,并将运行结果进行截图、对所得到的的结果分析。 六、实验总结 记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等,并将其写入实验报告中。

【附录----源程序】 #include #include using namespace std; typedef int ElemType; struct List { ElemType *list; int Size; int MaxSize; }; //初始化线性表 bool InitList(List &L) { L.MaxSize=20; L.list=new ElemType[L.MaxSize]; for(int i=0;i<20&&L.list==NULL;i++) { L.list=new ElemType[L.MaxSize]; } if(L.list==NULL) { cout<<"无法分配内存空间,退出程序"<L.Size+1||pos<1) { cout<<"位置无效"<

数据结构考试题库含答案

数据结构习题集含答案 目录

选择题 第一章绪论 1.数据结构这门学科是针对什么问题而产生的(A ) A、针对非数值计算的程序设计问题 B、针对数值计算的程序设计问题 C、数值计算与非数值计算的问题都针对 D、两者都不针对 2.数据结构这门学科的研究内容下面选项最准确的是(D ) A、研究数据对象和数据之间的关系 B、研究数据对象 C、研究数据对象和数据的操作 D、研究数据对象、数据之间的关系和操作 3.某班级的学生成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那 么下面关于数据对象、数据元素、数据项描述正确的是(C ) A、某班级的学生成绩表是数据元素,90分是数据项 B、某班级的学生成绩表是数据对象,90分是数据元素 C、某班级的学生成绩表是数据对象,90分是数据项 D、某班级的学生成绩表是数据元素,90分是数据元素 4.*数据结构是指(A )。 A、数据元素的组织形式 B、数据类型 C、数据存储结构 D、数据定义 5.数据在计算机存储器内表示时,物理地址与逻辑地址不相同,称之为(C )。 A、存储结构 B、逻辑结构 C、链式存储结构 D、顺序存储结构 6.算法分析的目的是(C ) A、找出数据的合理性 B、研究算法中的输入和输出关系 C、分析算法效率以求改进 D、分析算法的易懂性和文档型性

7.算法分析的主要方法(A )。 A、空间复杂度和时间复杂度 B、正确性和简明性 C、可读性和文档性 D、数据复杂性和程序复杂性 8.计算机内部处理的基本单元是(B ) A、数据 B、数据元素 C、数据项 D、数据库 9.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储 比顺序存储要(B )。 A、低 B、高 C、相同 D、不好说 10.算法的时间复杂度取决于( C ) A 、问题的规模B、待处理数据的初始状态 C、问题的规模和待处理数据的初始状态 D、不好说 11.数据结构既研究数据的逻辑结构,又研究物理结构,这种观点(B )。 A、正确 B、错误 C、前半句对,后半句错 D、前半句错,后半句对 12.在数据结构中,从逻辑上可以把数据结构分成( C ) A、动态结构和静态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 13.线性表的顺序存储结构是一种( )的存储结构,线性表的链式存储结构是一种( A ) 存储结构。 A、随机存取 B、顺序存取 C、索引存取 D、散列存取 14.*下列程序的时间复杂度是(A ) for (i=1; i<=n; ++i){ for (j=1; j<=n; ++j){ c [i][j]=0;

《数据结构》实验指导书

《数据结构》实验指导书 实验类别:课内实验实验课程名称:数据结构 实验室名称:软件工程实验室实验课程编号:N02070601 总学时:64 学分: 4 适用专业:计算机科学与技术、网络工程、物联网工程、数字媒体专业 先修课程:计算机科学导论、离散数学 实验在教学培养计划中地位、作用: 数据结构是计算机软件相关专业的主干课程,也是计算机软硬件专业的重要基础课程。数据结构课程实验的目的是通过实验掌握数据结构的基本理论和算法,并运用它们来解决实际问题。数据结构课程实验是提高学生动手能力的重要的实践教学环节,对于培养学生的基本素质以及掌握程序设计的基本技能并养成良好的程序设计习惯方面发挥重要的作用。 实验一线性表的应用(2学时) 1、实验目的 通过本实验,掌握线性表链式存储结构的基本原理和基本运算以及在实际问题中的应用。 2、实验内容 建立某班学生的通讯录,要求用链表存储。 具体功能包括: (1)可以实现插入一个同学的通讯录记录; (2)能够删除某位同学的通讯录; (3)对通讯录打印输出。 3、实验要求 (1)定义通讯录内容的结构体; (2)建立存储通讯录的链表结构并初始化; (3)建立主函数: 1)建立录入函数(返回主界面) 2)建立插入函数(返回主界面) 3)建立删除函数(返回主界面) 4)建立输出和打印函数(返回主界面) I)通过循环对所有成员记录输出 II)输出指定姓名的某个同学的通讯录记录 5)退出 实验二树的应用(2学时) 1、实验目的 通过本实验掌握二叉排序树的建立和排序算法,了解二叉排序树在实际中的应用并熟练运用二叉排序树解决实际问题。 2、实验内容 建立一个由多种化妆品品牌价格组成的二叉排序树,并按照价格从低到高的顺序 打印输出。 3、实验要求 (1)创建化妆品信息的结构体; (2)定义二叉排序树链表的结点结构; (3)依次输入各类化妆品品牌的价格并按二叉排序树的要求创建一个二叉排序树链表;(4)对二叉排序树进行中序遍历输出,打印按价格从低到高顺序排列的化妆品品牌信息。 实验三图的应用(2学时)

数据结构试题及答案

第一章概论 一、选择题 1、研究数据结构就是研究(D)。 A. 数据的逻辑结构?B。数据的存储结构 C。数据的逻辑结构和存储结构?D.数据的逻辑结构、存储结构及其基本操作(研究非数值计算的程序设计问题中,计算机操作对象以及他们之间的关系和操作) 2、算法分析的两个主要方面是(A)。 A.空间复杂度和时间复杂度???B。正确性和简单性 C。可读性和文档性D.数据复杂性和程序复杂性 3、具有线性结构的数据结构是( D )。(线性结构就是:在非空有限集合中,存在为一个被称为第一个的数据元素和最后一个元素,有除了第一个元素,集合中每一个元素均只有一个前驱,除了最后一个元素有唯一后继)(链表、栈、队列、数组、串) A. 图B. 树??C.广义表(线性表的推广) D.栈 4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。 A.可执行性、可移植性和可扩充性? B. 可执行性、有穷性和确定性 C。确定性、有穷性和稳定性??? D. 易读性、稳定性和确定性 5、下面程序段的时间复杂度是( C )。 for(i=0;i

数据结构期末考试试题及答案

数据结构期末考试试题及答案 、选择题 评价一个算法时间性能的主要标准是()。1. A、算法易于调试 B、算法易于理解 C、算法的稳定性和正确性 D、算法的时间复杂度 )等五个特性。计算机算法具备有输入、输出、 2. A、可行性、可移植性和可扩充性 B、可行性、确定性和有穷性 C、确定性、有穷性和稳定性 D、XX、稳定性和XX 。带头结点的单链表head为空的判定条件是()3. A、h ead==NULL B、h ead->next==NULL C、head->next==head D、head!=NULL 以下关于线性表的说法不正确的是()。4. A、线性表中的数据元素可以是数字、字符、记录等不同类型。 B、线性表中包含的数据元素个数不是任意的。

C、线性表中的每个结点都有且只有一个直接前趋和直接后继。 D、存在这 样的线性表:表中各结点都没有直接前趋和直接后继。 在顺序表中,只要知道(),就可在相同时间内求出任一结点的存储地址。 5.A、基地址 B、结点大小 C、向量大小 D、基地址和结点大小 ()运算中,使用顺序表比链表好。6. A、插入 B、删除 C、根据序号查找 D、根据元素值查找一个长度为n的顺序表中,向第i个元素之前插入一个新元素时,需要向后移动()个元素7.A、n-i B、n-i+1 C、n-i-1 D、i ()适合作为经常在首尾两端操作线性表的存储结构。8. A、顺序表 B、单链表 C、循环链表 D、双向链表

栈和队列的共同点是() 9. A、都是先进后出 B、都是先进先出 C、只允许在端点处插入和删除元素 D、没有共同点 一个队列的入列序列是1234,则队列的输出序列是()。10. A 、4321 B 、12 3 4 C 、1432 D 、 3241队列与一般的线性表的区别在于()。11. A、数据元素的类型不同 B、运算是否受限制 C、数据元素的个数不同 D、逻辑结构不同 假上溢”现象会出现在()中。12. A、循环队列 B、队列 C、链队列 、顺序队列D.二、填空

数据结构实验指导书及答案(徐州工程学院)

《数据结构实验》实验指导书及答案

信电工程学院计算机科学和技术教研室编 2011.12 数据结构实验所有代码整理 作者郑涛 声明:在这里我整理了数据结构实验的所有代码,希望能对大家的数据结构实验的考试有所帮助,大家可以有选择地浏览,特别针对一些重点知识需要加强记忆(ps:重点知识最好让孙天凯给出),希望大家能够在数据结构实验的考试中取得令人满意的成绩,如果有做的 不好的地方请大家谅解并欢迎予以指正。 实验一熟悉编程环境 实验预备知识: 1.熟悉本课程的语言编译环境(TC或VC),能够用C语言编写完整的程序,并能够发现和改正错误。 2.能够灵活的编写C程序,并能够熟练输入C程序。 一、实验目的 1.熟悉C语言编译环境,掌握C程序的编写、编译、运行和调试过程。 2.能够熟练的将C程序存储到指定位置。 二、实验环境 ⒈硬件:每个学生需配备计算机一台。 ⒉软件:Windows操作系统+Turbo C; 三、实验要求 1.将实验中每个功能用一个函数实现。 2.每个输入前要有输入提示(如:请输入2个整数当中用空格分割:),每个输出数据都要求有内容说明(如:280和100的和是:380。)。 3.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。 四、实验内容 1.在自己的U盘中建立“姓名+学号”文件夹,并在该文件夹中创建“实验1”文件夹(以后每次实验分别创建对应的文件夹),本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照本次要求)。

2.编写一个输入某个学生10门课程成绩的函数(10门课程成绩放到结构体数组中,结构体包括:课程编号,课程名称,课程成绩)。 3.编写一个求10门成绩中最高成绩的函数,输出最高成绩和对应的课程名称,如果有多个最高成绩,则每个最高成绩均输出。 4.编写一个求10门成绩平均成绩的函数。 5.编写函数求出比平均成绩高的所有课程及成绩。 #include #include struct subject { int subject_id; char subject_name[20]; double subject_grades; }; struct subject sub[10]; void input() { int i; printf("please input:\n"); for(i=0;i<10;i++) { scanf("%d %s %lf",&sub[i].subject_id,&sub[i].subject_name,&sub[i].subject_g rades); } printf("you just input:\n"); for(i=0;i<3;i++) { printf("%d %s %lf\n",sub[i].subject_id,sub[i].subject_name,sub[i].subject_g rades); } } void subject_max() { int i,flag; double max=sub[0].subject_grades; for(i=0;i<10;i++) { if(sub[i].subject_grades>max)

数据结构实验指导书(C版)

数据结构实验指导书(C语言版) 2017年9月

目录 1、顺序表的实现 (1) 2、链栈的实现 (3) 3、前序遍历二叉树 (5) 4、图的深度优先遍历算法 (7) 5、散列查找 (9)

1、顺序表的实现 1. 实验目的 ⑴掌握线性表的顺序存储结构; ⑵验证顺序表及其基本操作的实现; ⑶理解算法与程序的关系,能够将顺序表算法转换为对应的程序。 2. 实验内容 ⑴建立含有若干个元素的顺序表; ⑵对已建立的顺序表实现插入、删除、查找等基本操作。 3. 实现提示 定义顺序表的数据类型——顺序表结构体SeqList,在SeqList基础上实现题目要求的插入、删除、查找等基本操作,为便于查看操作结果,设计一个输出函数依次输出顺序表的元素。简单起见,本实验假定线性表的数据元素为int型,要求学生: (1)将实验程序调试通过后,用模板类改写; (2)加入求线性表的长度等基本操作; (3)重新给定测试数据,验证抛出异常机制。 4. 实验程序 在编程环境下新建一个工程“顺序表验证实验”,并新建相应文件,文件包括顺序表结构体SeqList的定义,范例程序如下: #define MaxSize 100 /*假设顺序表最多存放100个元素*/ typedef int DataType; /*定义线性表的数据类型,假设为int型*/ typedef struct { DataType data[MaxSize]; /*存放数据元素的数组*/ int length; /*线性表的长度*/ } SeqList; 文件包括建立顺序表、遍历顺序表、按值查找、插入操作、删除操作成员函数的定义,范例程序如下: int CreatList(SeqList *L, DataType a[ ], int n) { if (n > MaxSize) {printf("顺序表的空间不够,无法建立顺序表\n"); return 0;} for (int i = 0; i < n; i++) L->data[i] = a[i]; L->length = n; return 1; }

数据结构试题(含答案)

数据结构试题(含答案) 1.数据逻辑结构包括线性结构、树形结构和图状结构三种类型,树形结构和图状结构合称非线性结构 2.数据的逻辑结构分为集合、线性结构、树形结构和图状结构 4种。 3.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 1 个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有 1 个后续结点。 4.线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。 5.在树形结构中,树根结点没有前驱结点,其余每个结点有且只有 1 个前驱结点;叶子结点没. 6.数据结构的基本存储方法是顺序、链式、索引和散列存储。有后续结点,其余每个结点的后续结点可以任意多个。 7.衡量一个算法的优劣主要考虑正确性、可读性、健壮性和时间复杂度与空间复杂度。8.评估一个算法的优劣,通常从时间复杂度和空间复杂度两个方面考察。 9.算法的5个重要特性是有穷性、确定性、可行性、输入和输出。 10.在单链表中,要删除某一指定的结点,必须找到该结点的前驱结点。 11.在单链表中,要删除某一指定的结点,必须找到该结点的前驱结点。 12.在双链表中,每个结点有两个指针域,一个指向前驱结点,另一个指向后继结点。13.在顺序表中插入或删除一个数据元素,需要平均移动 n 个数据元素,移动数据元素的个数与位置有关 14.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表的元素是,应采用顺序存储结构 15.根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成单链表和双链表。 16.顺序存储结构是通过下标表示元素之间的关系的;链式存储结构是通过指针表示元素之间的关系的 17.带头结点的循环链表L中只有一个元素结点的条件是 L->next->next=L 18.栈是限定仅在表尾进行插入或删除操作的线性表,其运算遵循后进先出的原则。19.空串是零个字符的串,其长度等于零。空白串是由一个或多个空格字符组成的串,其长度等于其包含的空格个数。 20.组成串的数据元素只能是单个字符。 21.一个子串”str”在主串”datastructure”中的位置是 5 。 22.字符串中任意个连续字符构成的部分称为该串的子串。 23.二维数组M的每个元素是6个字符组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则存放M至少需要 540个字节;M的第8列和第5行共占108个字节24.稀疏矩阵一般的压缩存储方法有两种,即三元组表和十字链表。 25.广义表((a),((b),c),(((d))))的长度是 3 ,深度是 4 。 26.在一棵二叉树中,度为零的结点的个数为n0,度为2 的结点的个数为n2,则有n0= n2+1 。 27.在有n个结点的二叉链表中,空链域的个数为__n+1__。 28.一棵有n个叶子结点的哈夫曼树共有__2n-1_个结点 29.深度为5的二叉树至多有 31 个结点。 30.若某二叉树有20个叶子结点,有30个结点仅有一个孩子,则该二叉树的总结点个数为69 。

相关文档
最新文档