数据结构应用题

北京语言大学网络教育学院

《数据结构》

【应用题】(

1、已知序列(12,4,17,10,7,30),用直接选择排序法对其进行递增排序,写出每一趟的排序结果。答:第1趟:4 12 17 10 7 30

第2趟:4 7 17 10 12 30

第3趟:4 7 10 17 12 30

第4趟:4 7 10 12 17 30

第5趟:4 7 10 12 17 30

2、单链表结点的类型定义如下:

typedef struct LNode {

int data;

struct LNode *next;

} LNode, *Linklist;

写一算法,将带头结点的有序单链表A和B合并成一新的有序表C。

(注:不破坏A和B的原有结构)

答:Merge(Linklist A, Linklist B, Linklist &C )

void Merge(Linklist A, Linklist B, Linklist &C)

{ C=(Linklist)malloc(sizeof(LNode));

pa=A->next; pb=B->next; pc=C;

while(pa&&pb)

{ pc->next=(Linklist)malloc(sizeof(LNode));

pc=pc->next;

if(pa->data<=pb->data)

{ pc->data=pa->data; pa=pa->next;}

else

{ pc->data=pb->data; pb=pb->next;}

}

if(!pa) pa=pb;

while(pa)

{ pc->next=(Linklist)malloc(sizeof(LNode));

pc=pc->next;

pc->data=pa->data; pa=pa->next;

}

pc->next=NULL;

}

3、已知一棵非空二叉树,其按中序和后序遍历的结果分别为:

中序:CGBAHEDJFI 后序:GBCHEJIFDA

请画出这棵二叉树,并写出其前序遍历的结果。

答:前序遍历结果:ACBGDEHFJI

4、已知字符:C1,C2,C3,C4,C5,C6的权分别为:17,5,16,4,8,11,请构造相应的赫夫曼树,并

给出相应字符的赫夫曼编码。

答:c1:10 c2:1111 c3:01 c4:1110 c5:110 c6:00

5、已知如下图所示二叉树,分别写出其前序、中序和后序序列。

答:前序:ABDECF、中序:DBEACF、后序:DEBFCA

6、已知某二叉树中序遍历的结果是ABC,试画出其可能的二叉树五种形态。

1、B

2、 C

3、 C

4、 A

5、A

/ \ / / \ \

A C

B A B C

/ / \ /

A B C B

7、一个一维整数数组A[m]中有n (n≤m)个非空整数,它们相继存放于数组的前端并已按非递减顺序排列,在数组A[ ]中插入一个新的整数x ,并使得插入后仍保持非递减有序。要求x 插在值相等的整数后面。编写相应的函数实现。

答:void InsertSort (int A[ ], int m , int & n , int x)

8、假设字符A,B,C,D,E,F的使用频率分别是0.07,0.09,0.12,0.22,0.23,0.27,写出A,B,C,D,E,F的Huffman(哈夫曼)编码。

答:A = 1110 、B = 1111、C = 110、D = 00 、E = 01 、F = 10

9、一颗二叉树的中序序列和后序序列分别是DCBAEFG和DCBGFEA, 请画出该二叉树并给出先序序列。答:先序为ABCDEFG

A

B E

C F

D G

10、设有一个输入数据的序列是 { 46, 25, 78, 62, 12, 37, 70, 29 }, 试画出从空树起,逐个输入各个数据而生成的二叉搜索树。

答:按顺序逐个输入

46

/ \

25 78

/ \ /

12 37 62

/ \

29 70

11、已知一棵二叉树的先序序列是ABCDEFG,中序序列为CBEDAFG,请构造出该二叉树。

答: A

/ \

B F

/ \ \

C D G

/

E

12、有一组关键码序列(38,19,65,13,49,41,1,73),采用冒泡排序方法由小到大进行排序,请写出每趟排序的结果。

答:#include "stdio.h"

int _tmain(int argc, _TCHAR* argv[])

{

int kArr[]={38,19,65,13,49,41,1,73};

printf("原始数据:");

for(int i=0;i<8;i++)

printf("%d ",kArr[i]);

printf("\n\n");

for(int i=0;i<8-1;i++)

{

bool bFlag=false;

for(int j=8-1;j>i;j--)

if(kArr[j]

{

int nTmp=kArr[j];

kArr[j]=kArr[j-1];

kArr[j-1]=nTmp;

bFlag=true;

}

if(!bFlag) break;

printf("第%d次排序:",i+1);

for(int k=0;k<8;k++)

printf("%d ",kArr[k]);

printf("\n");

}

return 0;

}

13、设图G=,V={1,2,3,4,5,6},E={<1,2>,<1,3>,<2,5>,<3,6>,<6,5>,<5,4>,<6,4>}。画出该图,并写出所有的拓扑序列。

14、试编写一个函数,在一个顺序表A中查找出具有最大值和最小值的整数。函数的原型如下所示,原型的参数表中给出顺序表对象为A,通过算法执行,从参数表中的引用参数Max中得到表中的最大整数,Min 中得到表中的最小整数。

注意,函数中可使用顺序表的如下两个公有函数:

int Length( ); 求表的长度;

int getData(int k); 提取第k个元素的值。

#include “SeqList.h”

template

void FindMaxMin(SeqList& A, int& Max, int& Min);

答:#include “SeqList.h”

template

void FindMaxMin(SeqList& A, int& Max, int& Min) { Max=Min=A.getData(0);

for(int i=1; i

if(A.getData(i)>Max) Max=A.getData(i);

else if(A.getData(i)

}

}

15

答:#include

#include

#define N 8

using namespace std;

class Node

{

public:

char c;

int weight;

int lchild;

int rchild;

int parent;

Node();

Node(char c,int w, int lc, int rc, int p); };

class HuffmanTree

{

public:

Node data[2 * N - 1];

int leafNum;

HuffmanTree(char c[N],int w[N]);

void WriteHuffmanEncoding();

};

Node::Node()

{

c=' ';

weight = 0;

lchild = -1;

rchild = -1;

parent = -1;

}

Node::Node(char c,int w, int lc, int rc, int p) {

this->c = c;

this->weight = w;

this->lchild = lc;

this->rchild = rc;

this->parent = p;

}

HuffmanTree::HuffmanTree(char c[N],int w[N])

{

leafNum = N;

for (int i = 0; i < N; i++)

{

data[i].c = c[i];

data[i].weight = w[i];

}

int min;

int index;

int min2;

int index2;

for (int i = 0; i < leafNum - 1; i++)

{

min = min2 = INT_MAX;

index = index2 = -1;

for (int j = 0; j < leafNum + i; j++)

{

if ((data[j].parent == -1) && (data[j].weight < min)) {

min2 = min;

index2 = index;

min = data[j].weight;

index = j;

}

else if ((data[j].parent == -1) && (data[j].weight < min2)) {

min2 = data[j].weight;

index2 = j;

}

}

data[leafNum + i].weight = min + min2;

data[leafNum + i].lchild = index;

data[leafNum + i].rchild = index2;

data[index].parent = data[index2].parent = leafNum + i;

}

}

void HuffmanTree::WriteHuffmanEncoding()

{

for (int i = 0; i < leafNum; i++)

{

string h = "";

int p = i;

while (data[p].parent != -1)

if (p == data[data[p].parent].lchild) h = "0" + h;

else h = "1" + h;

p = data[p].parent;

}

cout<<"字母"<

}

}

int main()

{

char c[N] = {'A', 'B','C', 'D', 'E','F', 'G', 'H'};

int w[N] = {25, 10, 36, 4, 5,6.11,3};

HuffmanTree ht(c,w);

ht.WriteHuffmanEncoding();

}

16.设有一个关键码的输入序列{ 55, 88, 100, 120, 90, 150, 40, 20,95},从空树开始构造平衡二叉搜索树,画出每加入一个新结点时二叉树的形态。若发生不平衡,指明需做的平衡旋转的类型及平衡旋转的结果。

答:345 636 434 648 484 465 253 845 244 699 009 845 623 135 347 658 757 242 153 467 254 363 212 426 769 551 985 247 623 8951

17.编写实现“直接插入排序”的子函数,入口参数是整型数组L[ ]和数组长度n.

答:void sort(L, n)

int L, n;

{ int i, x;

for(i=1; i

{x=L[i];

while(i>0 && L[i-1]>x)

{L[i]=L[i-1];

i++;

}

L[i-1]=x;

}

18.简述顺序表和链表存储方式的特点。

答:顺序表的优点是可以随机访问数据元素;缺点是大小固定,不利于增删结点。链表的优点是采用指针方式增减结点,非常方便(只需要改变指针指向,不移动结点);缺点是不能进行随机访问,另外,每个结点上增加指针域,造成额外存储空间增大。

19.对链表设置头结点的作用是什么?(至少说出两条好处)

答: (1) 对带头结点的链表,在表的任何结点之前插入结点或删除表中任何结点,所要做的都是修改前一结点的指针域,因为任何元素结点都有前驱结点。若链表没有头结点,则首元素结点没有前驱结点,在其前插入结点或删除该结点时操作会复杂些。 (2) 对带头结点的链表,表头指针是指向头结点的非空指针,因此空表与非空表的处理是一样的。

20.若用二叉链表作为二叉树的存储表示,试编写算法统计二叉树中叶结点的个数。

答:, int& count)

{

if ( T )

{

if ((!T->lchild)&& (!T->rchild))

count++;

CountLeaf( T->lchild, count);

CountLeaf( T->rchild, count);

}

}

#include "stdlib.h"

#define MAXNODE 20

#define ISIZE 8

#define NSIZE0 7

#define NSIZE1 8

#define NSIZE2 15

//SHOWCHAR = 1(显示字符) SHOWCHAR = 0(显示数字)

#define SHOWCHAR 1

struct BTNode

{

int data;

BTNode *rchild;

BTNode *lchild;

};

struct ABTStack

{

BTNode *ptree;

ABTStack *link;

};

static pCounter = 0;

/*

前序遍历函数pre_Order_Access()<非递归算法> 参数描述:

BTNode *head: 根节点指针

*/

void pre_Order_Access(BTNode *head)

{

BTNode *pt;

ABTStack *ps,*top;

pt = head;

top = NULL;

printf("\n二叉树的前序遍历结果<非递归>:\t");

while(pt!=NULL ||top!=NULL) /*未遍历完,或堆栈非空*/ {

while(pt!=NULL)

{

if(SHOWCHAR)

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

else

printf("%d ",pt->data);

ps = (ABTStack *)malloc(sizeof(ABTStack));

ps->ptree = pt;

ps->link = top;

top = ps;

pt = pt->lchild;

pCounter++;

}

if(top!=NULL)

{

pt = top->ptree;

ps = top;

top = top->link;

free(ps);

pt = pt->rchild;

}

}

}

21.编写实现“起泡排序”的子函数,入口参数是整型数组L[ ]和数组长度n. 答:void BubbleSort(int L[],int n)

{

int i,j,t;

for(i=0;i

{

int hasChanged=0;

for(j=1;j

if(L[j-1]>L[j]) t=L[j],L[j]=L[j-1],L[j-1]=t,hasChanged=1;

if(hasChanged==0) break;

}

}

关于数据结构栈的应用题

关于数据结构栈的应用题 数据结构中的栈是一种常见的数据结构,它遵循先进后出(LIFO)的原则。栈常用于解决各种实际问题,下面我将从多个角 度给出栈的应用题的例子。 1. 括号匹配问题: 栈可以用于解决括号匹配问题。例如,给定一个包含括号的 字符串,我们可以使用栈来检查括号是否匹配。遍历字符串,当遇 到左括号时,将其压入栈中;当遇到右括号时,检查栈顶元素是否 为对应的左括号,如果是,则弹出栈顶元素,继续遍历;如果不是,则括号不匹配。最后,如果栈为空,则表示所有括号都匹配。 2. 浏览器的前进和后退功能: 浏览器的前进和后退功能可以使用栈来实现。当用户浏览网 页时,每当访问一个新页面,该页面的URL就会被压入栈中。当用 户点击后退按钮时,栈顶的URL会被弹出,用户就会返回上一个页面。当用户点击前进按钮时,可以将弹出的URL重新压入栈中,用 户就会前进到下一个页面。

3. 函数调用的追踪: 在编程中,函数的调用可以使用栈来追踪。当一个函数被调 用时,函数的相关信息(如参数、返回地址等)会被压入栈中。当 函数执行完毕后,栈顶的信息会被弹出,程序会回到调用该函数的 位置继续执行。 4. 表达式求值: 栈可以用于解决表达式求值问题。例如,给定一个包含加减 乘除运算符的表达式,我们可以使用栈来计算其结果。遍历表达式,当遇到数字时,将其压入栈中;当遇到运算符时,从栈中弹出两个 数字进行运算,并将结果压入栈中。最后,栈中剩下的数字就是表 达式的计算结果。 5. 撤销操作: 在编辑器或者文字处理软件中,撤销操作可以使用栈来实现。每当用户进行一次操作(如插入、删除、替换文本等),将该操作 的信息压入栈中。当用户点击撤销按钮时,弹出栈顶的操作信息, 将文本恢复到之前的状态。

《数据结构》应用题练习

《数据结构》应用题练习 1、将下图所示的森林转换成二叉树。 2、已知一棵二叉树的中序序列和后序序列分别如下 先序序列:A B D E C F H K G 中序序列:B E D A H F K C G 请完成:(1)画出该二叉树(2分); (2)写出该二叉树的后序序列(2分)。 3、对于一组给定的权值W={4,18,6,22,10,15},请完成: (1)建立相应的哈夫曼树; (2)计算其WPL值。 4、如下所示的有向图,回答下面问题: (1)该图是强连通的吗?若不是,给出强连通分量。 (2)请给出图的邻接矩阵 (3)请给出图的邻接表和逆邻接表。 (4) 计算各点的入度和出度 5、下图是一个带权无向图,要求: (1)画出以V1为初始顶点、按Prim算法构造最小生成树的过程;

(2)求出最小生成树的总代价; (3)Prim算法求最小生成树适用于什么情形? 6下图是一个带权无向图,要求: (1)画出以V1为初始顶点、按克鲁斯卡尔算法构造最小生成树的过程; (2)求出最小生成树的总代价; (3)克鲁斯卡尔算法求最小生成树适用于什么情形? 7、设有一组初始记录关键字为(10, 2, 26, 4, 18, 24, 21, 15, 8,) 要求: (1)构造一棵二叉排序树并给出构造过程。 (2)查找关键字2需要和哪些结点进行比较? (3)等概率查找下的ASL是多少? 8、已知哈希函数为H(key)=key%11,哈希表长度为13,用平方探测再散列的方法处理冲突。 表中已依次存放了关键字为33、23、32、54和42的5个记录: (1)现将关键字65填入哈希表,确定其存储地址(要求写出每一步的哈希地址计算表达式)。 (2)若查找关键字65的记录,需依次与哪些关键字进行比较? (3)为确保查找正确,如果删除关键字为54的记录应作何处理? 9关键码集为{47,7,29,11,16,92,22,8,3},散列表表长为m=11,散列函数为H(key)=key mod 11 ,线性探测法处理冲突。 (1)生成哈希表 (2)计算查找成功的ASL

数据结构应用题练习

数据结构应用题练习 一、简介 数据结构是计算机科学中的重要概念,是指数据组织、管理和存储的方式。它是计算机处理和分析数据的基础,在各个领域都有广泛的应用。本文将通过几个数据结构应用题的练习,展示数据结构在实际问题中的应用。 二、链表应用题 链表是一种常见的数据结构,在许多场景中都有广泛的应用。假设有一组学生的信息,包括学生姓名、年龄和成绩,请使用链表来存储并实现以下操作: 1. 添加学生信息 2. 删除学生信息 3. 查找学生信息 4. 修改学生信息 三、栈应用题 栈是一种后进先出(LIFO)的数据结构,在很多应用中都有不可或缺的地位。以网页浏览器的前进和后退功能为例,使用栈可以很方便地实现该功能。请描述如何使用栈来实现浏览器的前进和后退功能,并分析算法的时间复杂度。

四、队列应用题 队列是一种先进先出(FIFO)的数据结构,常用于处理排队等场景。现假设有一个任务队列,多个任务需要按照顺序执行。请使用队列来 存储任务,并实现以下操作: 1. 添加任务到队列 2. 从队列中取出并执行任务 3. 判断队列是否为空 4. 清空队列中的所有任务 五、树应用题 树是一种重要的非线性数据结构,在很多领域都有广泛应用。假设 有一组学生的信息,包括学生姓名、年龄和成绩,请使用树来存储这 些信息,并实现以下操作: 1. 添加学生信息到树中 2. 从树中查找指定学生的信息 3. 删除指定学生的信息 4. 获取树中所有学生的平均成绩 六、图应用题

图是一种用于描述事物之间关系的数据结构,在网络分析、路径规划等领域有广泛应用。假设有一张地图,其中包含若干城市和连接它们的道路,请使用图来存储地图信息,并实现以下操作: 1. 添加城市和道路到图中 2. 查找两个城市之间的最短路径 3. 删除某个城市及其相关的道路 4. 统计图中有多少个孤立的城市 七、哈希表应用题 哈希表是一种通过散列函数实现高效存储和查找的数据结构,在很多场景中都有广泛应用。假设有一组学生的信息,包括学生姓名、年龄和成绩,请使用哈希表来存储这些信息,并实现以下操作: 1. 添加学生信息到哈希表中 2. 从哈希表中查找指定学生的信息 3. 删除指定学生的信息 4. 统计哈希表中学生信息的个数 八、总结 以上是几个常见的数据结构应用题的练习,通过这些练习可以更深入地理解数据结构的应用和算法的设计。数据结构是计算机科学中非常重要的一个领域,其应用广泛且多样化。在实际问题中,合理选择

《数据结构》应用题参考习题

《数据结构》应用题参考习题数据结构是计算机科学中的一门基础课程,它主要研究数据的组织、存储和管理方式,以及不同数据结构对算法执行效率的影响。在实际 应用中,数据结构起到了至关重要的作用。本文将介绍一些《数据结构》的应用题,并给出相应的参考习题。 一、栈的应用题 1. 符号匹配问题 问题描述:给定一个字符串,在其中包含了一些圆括号"()"、方括号"[]"和花括号"{}",判断字符中的括号是否匹配。 例题:判断字符串"{[()]()}"是否匹配。 解题思路:利用栈的先进后出特点,遍历字符串中的每个字符。如 果是左括号,则入栈;如果是右括号,则判断栈顶元素是否与之匹配。 参考习题:编写一个程序,实现括号匹配的功能,并输出匹配结果。 二、队列的应用题 1. 循环队列的应用 问题描述:设计一个循环队列,实现入队、出队等基本操作。 解题思路:利用数组实现循环队列,需要设置一个队头指针front 和一个队尾指针rear。入队操作时,将元素添加到rear位置;出队操作时,返回front位置元素,并将front后移。

参考习题:实现一个循环队列,并进行相关操作的测试。 三、链表的应用题 1. 单链表反转 问题描述:给定一个单链表,将其反转。 例题:将链表1->2->3->4->5反转为5->4->3->2->1。 解题思路:利用三个指针prev、cur和next,依次遍历链表,并修 改指针指向实现链表的反转。 参考习题:编写一个程序,实现单链表反转,并输出反转后的链表。 四、树的应用题 1. 二叉树的遍历 问题描述:给定一个二叉树,实现它的前序遍历、中序遍历和后序 遍历。 解题思路:分别使用递归和迭代的方式实现二叉树的前序遍历、中 序遍历和后序遍历。 参考习题:编写一个程序,实现二叉树的前序遍历、中序遍历和后 序遍历,并输出遍历结果。 五、图的应用题 1. 图的最短路径

2024王导数据结构综合应用题

2024王导数据结构综合应用题假设2024年,王导是一位深受学生喜爱的计算机科学导师。他设 计了一道综合应用题,旨在考察学生对数据结构的应用能力。以下是 题目内容和解答。 题目: 在2024年的某个国家,有许多城市需要进行道路规划。每个城市 可以通过道路连接到其他城市,形成一个网络。现有一份城市之间的 道路连接关系表,其中包含了城市之间可以直接通行的道路及其长度。请设计一个算法,找到所有城市之间的最短路径及其长度。 解答: 为了解决这个问题,我们可以使用图的最短路径算法。以下是一种 常用的算法——Dijkstra算法。 1. 创建一个集合S,用于存放已经找到最短路径的城市,初始时为空。 2. 创建一个数组dist,用于存放每个城市到起点的最短路径长度, 初始时所有元素为无穷大。 3. 选取一个起点,设置dist[起点]为0,并将起点加入集合S。 4. 对于起点相邻的每个城市,更新其到起点的最短路径长度,并将 其加入集合S。 5. 从剩余的城市中选取一个离起点最近的城市u,将它加入集合S。

6. 对于每个城市v,如果v不在集合S中且通过u可以找到更短的 路径,则更新其最短路径长度,并将其加入集合S。 7. 重复步骤5和步骤6,直到所有城市都加入集合S。 使用Dijkstra算法可以找到起点到所有城市的最短路径及其长度。 在这里可以使用优先队列(最小堆)来存储城市和最短路径长度的对 应关系,以提高算法效率。 接下来我们以一个具体的例子来说明算法的步骤。 假设有4个城市,用数字1、2、3、4代表,它们之间的道路如下:- 城市1和城市2之间有一条长度为5的道路。 - 城市1和城市3之间有一条长度为9的道路。 - 城市2和城市3之间有一条长度为2的道路。 - 城市2和城市4之间有一条长度为6的道路。 - 城市3和城市4之间有一条长度为3的道路。 现在我们以城市1为起点,按照Dijkstra算法的步骤来求解最短路 径及其长度。 1. 初始化操作: - 集合S = {1},dist = [0, ∞, ∞, ∞],表示起点到各个城市的最短路 径长度。 2. 对于起点1的邻居城市,更新其最短路径长度:

数据结构应用题考试答案

一、应用题 1. 已知线性表的存储结构为顺序表,阅读下列算法,并回答问题: (1)设线性表L=(21,-19,-6,34,0,-69,38,47,-52),写出执行算法f11(&L)后的L状态; (2)简述算法f11的功能。 void f11 (SeqList *L) { int i,j; for (i=j=0;ilen; i++) if(L->elem[i]>=0){ if(i!=j)L->elem[j]=L->elem[i]; j++; } L->len=j; } 2. 假设以带头结点的单链表表示线性表,阅读下列算法f22,并回答问题: (1)设线性表为( a1, a2, a3, a4, a5, a6, a7 ), 写出执行算法f22后的线性表; (2)简述算法f22的功能。 void fun(LNode *L) { //L为带头结点单链表的头指针 P =L; while (p &&p->next){ q = p->next; p->next =q->next; p =q->next; free(q); } } 3.假设以数组seqn[m]存放循环队列的元素,设变量rear和quelen分别指示循环队列中队尾元素的位置和元素的个数。 (1)写出队满的条件表达式; (2)写出队空的条件表达式; (3)设m=50,rear=19,quelen=25,求队头元素的位置; (4)写出一般情况下队头元素位置的表达式。 4.假设以数组seqn[m]存放循环队列的元素,设变量front和rear分别指示循环队列中队头元素的位置和队尾元素的位置。 (1)写出队满的条件表达式; (2)写出队空的条件表达式;

数据结构题库应用题上海杉达学院期末总复习题

《数据结构》――应用题复习概要 2020年7月 1.写出执行下列程序段时,语句S的执行次数。 2.for (i=1; i=i; j--) 4.S; 5.假设n为2的乘幂,并且n>2,试求下列算法的时间复杂度及变量count的值(以n的 函数形式表示) int Time(int n) { int count:=0; x:=2; while (xRL = P->RL; P->RL = Q; Q->RL->LL = Q; Q->LL = P; (2)Q->RL = P; P->LL->RL = Q; Q->LL = P->LL; P->LL = Q; (3)P->LL->RL = P->RL; P->RL->LL = P->LL; 7.设栈S的初始状态为空,元素a, b, c, d, e和f依次通过栈S,试分析下列各组出栈次序, 每组所用的最大容量。(1)a,b,c,d,e,f;(2)f,e,d,c,b,a;(3)b,d,c,f,e,a 8.有字符串A+B*C-D,试写出利用栈操作将该字符串序列改为ABC*+D-的操作步骤,这 里用X和S分别表示字符的进栈和出栈操作(例如把字符ABCD改为ACBD的操作步骤为XSXXSSXS)。 XSXXSXXSSSXXSS 9.一棵二叉树的结点数采用顺序存储结构,存于下列数组T中,画出该二叉树。

数据结构应用题答案201476

数据结构应用题答案 第2章线性表 1.设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A 的后面插入结点B的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)。答:操作序列如下:q->rlink = p->rlink ; p->rlink = q ; q->rlink->llink = q ; q->llink = p ; 注意答案不唯一 第3章栈和队列 1.设有编号为1,2,3,4的四辆列车,顺序进入一个栈式结构的车站,具体写出这四辆列车开出车站的所有可能的顺序。 答:共计14种,分别是:1234, 1243, 1324, 1342, 1432, 2134, 2143, 2341, 2314,2431, 3214, 3241, 3421, 4321 2.如果输入序列为1,2,3,4,5,6,试问能否通过栈结构得到以下两个序列:4,3,5,6,1,2和1,3,5,4,2,6;请说明为什么不能或如何才能得到。 答:(1)不能得到4,3,5,6,1,2 ;因为1,2,3,4入栈后;4,3出栈;得到序列4,3;栈中还有1,2;5入栈后即出栈,得到序列4,3,5;6入栈后即出栈,得到序列4,3,5,6;此时,栈中还有1,2;必须2先出栈,然后1再出栈,1不可能在2之前出栈。故而得不到该序列。 (2)能得到输出顺序为1,3,5,4,2,6的序列。得到的操作如下:1入栈后即出栈,得到序列1;2,3入栈后3即出栈,得到序列1,3;4,5入栈后,5出栈,4出栈,得到序列1,3,5,4;2出栈,得到序列1,3,5,4,2;6入栈后即出栈,得到序列1,3,5,4,2,6。 3.假设正读和反读都相同的字符序列为“回文”,例如,‘abba’和‘abcba’是回文,‘abcde’和‘ababab’则不是回文。假设一字符序列已存入计算机,请用堆栈判断其是否为回文,简述算法。 答:方法一:使用数据结构:循环队列和顺序栈。算法思路为: 1.将字符串按照用户输入的顺序分别入栈和队列 2.分别从队列和栈中取出首个字符 3.比较取出的字符,若相等,继续分别从队列和栈中取首个字符;否则跳出循环,并设置标志flag=0; 4.若队列和栈中的字符都取完,则结束,设置标志flag=1; 5.flag=1,表示字符从前往后和从后往前的序列完全匹配,该字符串属于回文 6.flag=0,表示字符从前往后和从后往前的序列不完全匹配,该字符串不属于回文 方法二:使用栈。将字符串的前一半入栈,再依次出栈,与后一半进行比较,若有不等则不是回文;若依次相等,则是回文。 注意:本题要求简答算法思路,并不要求写出具体算法。 4.试写出循环队列判空和判满的条件(队列最大容量为M)。 答:假设循环队列最大存储容量为M 判空:Q.front==Q.rear (1) 判满:(Q.rear+1)%M==Q.front (2) 评分标准:给出(1)和(2)式分别得3分,其他酌情扣分。 5.假设Q[0..10]是一个循环队列,初始状态为front=rear=0,画出做完下列操作后队列的头尾指针的状态变化情况,若不能入队,请指出其元素,并说明理由。 d,e,b,g,h入队;d,e出队;i,j,k,l,m入队;n,o,p入队 答:(图自己根据解答画出)d,e,b,g,h入队;状态1:front=0,rear=5;

数据结构附部分答案

一、选择题 1、下面关于线性表的叙述错误的是( C )。 A.线性表采用顺序存储必须占用一片连续的存储空间 B.线性表采用链式存储不必占用一片连续的存储空间 C.线性表采用链式存储便于插入和删除操作的实现 D.线性表采用顺序存储便于插入和删除操作的实现 2、栈是一种特殊的线性表,具有( B )性质 A.先进先出 B.先进后出 C.后进后出 D.顺序进出 3、顺序循环队列中(数组大小为n),队头指示front指向队列的第一个元素,队尾指示 rear指向队列最后一个元素的后一个位置,则循环队列中存放了n-1个元素,即循环队列满的条件是(B)。 A.(rear+1)%n=front-1 B.(rear+1)%n=front C. (rear)%n=front D.rear+1=front 4、在一个单链表中,若删除p所指结点的后续结点,则执行(A)。 A. p->next=p->next->next B. p=p->next;p->next->next C.p->next=p->next D.p=p->next->next 5、设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2, 则下列等式成立的是( A )。 A. N0=N2+1 B.N0=Nl+N2 C. N0=N1+1 D.N0=2N1+l 6、设有6个结点的无向图,该图至少应有( D )条边才能确保是一个连通图。 A.8 B.6 C.7 D.5 7、设有向无环图G中的有向边集合E={<1,2>,<2,3>,<3,4>,<1,4>},则下列属于该 有向图G的一种拓扑排序序列的是(A)。 A.1,2,3,4 B. 2,3,4,1 C.1,4,2,3 D. 1,2,4,3 8、已知一个有向图如下所示,则从顶点a出发进行深度优先遍历,不可能得到的DFS序列为(A)。 A.a d b e f c B. a d c e f b C.a d c e b f D.a d e f b c

《数据结构》大题及答案

《数据结构》大题及答案 一、应用题 1.已知某字符串S中共有8种字符,各种字符分别出现2次、1次、4次、5次、7次、3次、4次和9次,对该字符串用[0,1]进行前缀编码,问该字符串的编码至少有多少位。 解:以各字符出现的次数作为叶子结点的权值构造的哈夫曼编码树如图所示。其带权路径长度=2×5+1×5+3×4+5×3+9×2+4×3+4×3+7×2=98,所以,该字符串的编码长度至少为98位。 2.已知关键码序列为(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec),散列表的地址空间为0~16,设散列函数为H(x)=[ i/2 」(取下整数) ,其中i为关键码中第一个字母在字母表中的序号,采用链地址法处理冲突构造散列表,并求等概率情况下查找成功的平均查找长度。 解:H(Jan)=10/2=5, H(Feb)=6/2=3, H(Mar)=13/2=6, H(Apr)=1/2=0 H(May)=13/2=6, H(Jun)=10/25, H(Jul)=10/25, H(Aug)=1/2=0 H(Sep)=19/2=8, H(Oct) =15/2=7, H(Nov) =14/2=7, H(Dec) =4/2=2 采用链地址法处理冲突,得到的开散列表如下: 平均查找长度=(1×7+2×4+3×1)/12=18/12

3.分析下面各程序段的时间复杂度 (1) s1(int n) { int p=1,s=0; for (i=1;i<=n;i++) { p*=i;s+=p; } return(s); } ——O(n) (2) s2(int n) x=0;y=0; For (k=1;k<=n;k++) x++; For (i=1;i<=n;i++) For (j=1;j<=n;j++) y++; ——O(n2) 4.下述算法的功能是什么? (1)(1)返回结点*p的直接前趋结点地址。 (2)交换结点*p和结点*q(p和q的值不变)。 5.对给定的一组权值W=(5,2,9,11,8,3,7),试构造相应的哈夫曼树,并计算它的带权路径长度。 解:构造的哈夫曼树如图所示。 WPL=2×4+3×4+5×3+7×3+8×3+9×2+11×2=120 6.已知散列函数H(k)=k mod 12,键值序列为(25, 37, 52, 43, 84, 99, 120, 15, 26, 11,

《数据结构》题库及答案

《数据结构》题库及答案 一、选择题 1.线性表的顺序存储结构是一种的存储结构,线性表的链式存储结构是一种的存储结构。 a.随机存储; b.顺序存储; c. 索引存取; d. HASH存取 2.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是。 a. edcba; b. decba; c. dceab; 3.一个队列的入队序列是1,2,3,4,则队列的输出序列是。 a. 4,3,2,1; b. 1,2,3,4; c. 1,4,3,2; ,2,4,1 4.在一个单链表中,已知p结点是q结点的直接前驱结点,若在p和q之间插入结点s,则执行的操作是。 a.s->nxet=p->next; p->next=s; b.| c.p->next=s->next; s->next=p; d.q->next=s; s->next=p; e.p->next=s; s->next=q; 5.设有两个串p,q,求q在p中首次出现的位置的运算称作。 a.联接 b.模式匹配 c.求子串 d.求串长 6.二维数组M的成员是6个字符(每个字符占一个存储单元)组成的串,行下标i的范围从0到8,列下标j 的范围从1到10,则存放M至少需要个字节。 a.90 7.在线索二叉树中,结点p没有左子树的充要条件是。 a.p->lch==NULL b.p->ltag==1 c.· d.p->ltag==1且p->lch=NULL e.以上都不对 8.在栈操作中,输入序列为(A,B,C,D),不可能得到的输出序列为:______ A、(A,B,C,D) B、(D,C,B,A) C、(A,C,D,B) D、(C,A,B,D) 9.已知某二叉树的后序序列是dabec,中序序列是debac,则它的先序序列是。 A、acbed B、decab C、deabc D、cedba 10.设矩阵A是一个对称矩阵,为了节省存储空间,将其下三角部分(见下图)按行序存放在一维数组B[1..n(n-1)/2]

数据结构应用题练习

1、假设一棵二叉树的层序序列是ABCDEFGHIJ 和中序序列是DBGEHJACIF,请画出该树。 21、有一个完全二叉树按层次顺序存放在一维数组中,如下所示: 请指出结点P 的父结点,左子女,右子女。 3、给出下列二叉树的先序序列。 4、已知二叉树的先序遍历序列为ABCDEFGH ,中序遍历序列为CBEDFAGH ,画出二叉树。 答案:二叉树形态 A F H G D E C B (2)设一棵二叉树的先序序列: A B D F C E G H ,中序序列: B F D A G E H C ①画出这棵二叉树。 ②画出这棵二叉树的后序线索树。 ③将这棵二叉树转换成对应的树(或森林)。 A B F D ( C E H G

(1) (2) 1、已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L中序序列:D,J,G,B,E,H, A,C,K,I,L,F。 i.写出该二叉树的后序序列; ii.画出该二叉树; iii.求该二叉树的高度(假定空树的高度为-1)和度为2、度为1、及度为0的结点个数。 该二叉树的后序序列为:J,G,D,H,E,B,K,L,I,F,C,A。 该二叉树的形式如图所示: 该二叉树高度为:5。 度为2的结点的个数为:3。 度为1的结点的个数为:5。 度为0的结点个数为:4。 5、试用权集合{12,4,5,6,1,2}构造哈夫曼树,并计算哈夫曼树的带权路径长度。 答案:

2 1 5 6 1118 73 4 12 30 WPL=12*1+(4+5+6)*3+(1+2)*4=12+45+12=69 6、已知权值集合为{5,7,2,3,6,9},要求给出哈夫曼树,并计算带权路径长度WPL 。 答案:(1)树形态: 3 2 5 5 1019 9 7 6 13 32 (2)带权 路 径 长 度 : WPL=(6+7+9)*2+5*3+(2+3)*4=44+15+20=79 (3) 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。 ① 试为这8个字母设计赫夫曼编码。 ② 试设计另一种由二进制表示的等长编码方案。 ③ 对于上述实例,比较两种方案的优缺点。 解:方案1;哈夫曼编码 先将概率放大100倍,以方便构造哈夫曼树。 w={7,19,2,6,32,3,21,10},按哈夫曼规则:【[(2,3),6], (7,10)】, ……19, 21, 32 (100) (40) (60) 19 21 32 (28) () (11) 7 10 6 (5)

数据结构应用题

一、应用题 1. 已知关键字序列为:(74,33,52,41,13,88,66,59)哈希表长为9,哈希函数为:H (k)=k %9,解决冲突用线性补偿探测法 (取Q=5),试构造哈希表,并求出等概率下查找成功的平均查找长度。 【答案】 (1)哈希表: 0 1 2 3 4 5 6 7 8 59 74 88 13 41 33 52 66 2 1 2 1 1 1 1 2 (2) ASL=(5*1+3*2)/8=11/8 2. 已知一个AOV 网如图所示。 (1)试画出它的邻接链表。(顶点号递减出现在各邻接表中) (2)试写出按照拓扑排序算法得到的拓扑序列。 V 6 V 1 V 2 V 4 V 5 V 3 【答案】 (1) 1 v 1 0 6 v 6 1 5 v 5 3 3 V 3 2 4 v 4 0 2 v 2 2 ∧ 6 5 3 ∧ 5 ∧ 5 ∧ 2 ∧ 3 2 ∧ (2)v 4,v 6,v 1,v 3,v 5,v 2 3. 已知线性表的存储结构为顺序表,阅读下列 算法,并回答问题: (1)设线性表L=(21,-7,-8,19,0,-11, 34,30,-10),写出执行f30(&L)后的L 状态; (2)简述算法f30的功能。 void f30 (SeqList *L) { int i,j; for (i=j=0;ilength; i++) if(L->data[i]>=0){ if(i!=j)L->data[j]=L->data[i]; j++; } L->length=j; } 【答案】 (1)L=(21,19,0,34,30) (2) 删除顺序表中小于0的数。 4. 已知关键字序列{34,26,47,12,63,41,22,59},利用堆排序的方法对其排序。 (1)写出在构成初始堆后关键字的排列情况。 (2)写出在堆排序的过程中输出前4个记录时,每次调整后关键字的排列情况。 【答案】 (1)初始堆:{12,26,22,34,63,41,47,59} (2)输出12后:{22,26,41,34,63,59,47} 输出22后:{26,34,41,47,63,59} 输出26后:{34,47,41,59,63} 输出34后:{41,47,63,59} 5. 请用克鲁斯卡尔算法构造下图所示网络的最小生成树。 14 v 1 v 4 v 5 v 2 v 3 V 6 10 8 18 22 12 10 16 19 20 【答案】 最小生成树如下图所示:

十套数据结构试题及答案

数据结构试卷(一) 一、单选题(每题2 分,共20分) 1.栈和队列的共同特点是( a )。 A。只允许在端点处插入和删除元素 B。都是先进后出 C.都是先进先出 D.没有共同点 2.用链接方式存储的队列,在进行插入运算时( d )。 A. 仅修改头指针 B. 头、尾指针都要修改 C。仅修改尾指针 D.头、尾指针可能都要修改 3.以下数据结构中哪一个是非线性结构?( d ) A。队列B。栈 C. 线性表 D. 二叉树 4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置 在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10 进制表示。c A.688 B.678 C.692 D.696 5.树最适合用来表示( c )。 A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据D。元素之间无联系的数据 6.二叉树的第k层的结点数最多为( d ). A.2k-1 B。2K+1 C。2K—1 D. 2k-1 7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进 行二分查找,则查找A[3]的比较序列的下标依次为( c d) A. 1,2,3 B。9,5,2,3 C. 9,5,3 D。9,4,2,3 8.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为 c A. O(1) B。 O(n) C. O(1og2n) D。 O(n2) 9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9 作为散列函数,则散列地址为1的元素有( c d)个, A.1 B.2 C.3 D.4 10.设有6个结点的无向图,该图至少应有( a )条边才能确保是一个连通图。 A.5 B。6 C。7 D。8 二、填空题(每空1分,共26分) 1.通常从四个方面评价算法的质量:____时间正确性_____、____占用内存_易读性____、 ____复杂度__强壮性___和_____准确度_ 高效率___. 2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为___3 0(n)_____。 3.假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数为 _____9_____个,树的深度为_____3______,树的度为____2_____。 4.后缀算式9 2 3 +— 10 2 / -的值为____3__—1____。中缀算式(3+4X)—2Y/3对应的后 缀算式为______3 4X*+ 2Y* / -_________________________。 5.若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指 针。在这种存储结构中,n个结点的二叉树共有____n_2n___个指针域,其中有_____n—1___个指针域是存放了地址,有________3__n+1______个指针是空指针。 6.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点 分别有___e+1_e___个和____e+1__2e__个。 7.AOV网是一种________有向无回路___________的图。 8.在一个具有n个顶点的无向完全图中,包含有____n-1_n(n—1)/2___条边,在一个具有n 个顶点的有向完全图中,包含有____n-1___n(n—1)_条边. 9.假定一个线性表为(12,23,74,55,63,40),若按Key % 4条件进行划分,使得同一余数的

《数据结构》应用题参考习题

一.《树》应用题 1. 已知一棵树边的集合为{},请画出这棵树,并回答下列问题: (1)哪个是根结点? (2)哪些是叶子结点? (3)哪个是结点g的双亲? (4)哪些是结点g的祖先? (5)哪些是结点g的孩子? (6)哪些是结点e的孩子? (7)哪些是结点e的兄弟?哪些是结点f的兄弟? (8)结点b和n的层次号分别是什么? (9)树的深度是多少? (10)以结点c为根的子树深度是多少? 2. 一棵度为2的树与一棵二叉树有何区别。 3. 试分别画出具有3个结点的树和二叉树的所有不同形态? 4. 已知用一维数组存放的一棵完全二叉树:ABCDEFGHIJKL,写出该二叉树的先序、中序和后序遍历序列。

5. 一棵深度为H的满m叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点都有m棵非空子树,如果按层次自上至下,从左到右顺序从1开始对全部结点编号,回答下列问题: (1)各层的结点数目是多少? (2)编号为n的结点的父结点如果存在,编号是多少? (3)编号为n的结点的第i个孩子结点如果存在,编号是多少? (4)编号为n的结点有右兄弟的条件是什么?其右兄弟的编号是多少? 6. 找出所有满足下列条件的二叉树: (1)它们在先序遍历和中序遍历时,得到的遍历序列相同; (2)它们在后序遍历和中序遍历时,得到的遍历序列相同; (3)它们在先序遍历和后序遍历时,得到的遍历序列相同; 7. 假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请写出该二叉树的后序遍历序列。 8. 假设一棵二叉树的后序序列为DCEGBFHKJIA,中序序列为DCBGEAHFIJK,请写出该二叉树的后序遍历序列。 9. 给出如图1所示的森林的先根、后根遍历结点序列,然后画出该森林对应的二叉树。 10.给定一组权值(5,9,11,2,7,16),试设计相应的哈夫曼树。

数据结构试题-附答案

一、选择题 1、在数据结构的讨论中把数据结构从逻辑上分为() A )内部结构与外部结构 B)静态结构与动态结构 C )线性结构与非线性结构 D )紧凑结构与非紧凑结构。 2、对线性表进行二分查找时,要求线性表必须()。 A. 以链接方式存储,且数据元素有序 B. 以链接方式存储 C. 以顺序方式存储,且数据元素有序 D. 以顺序方式存储 3、若长度为n的线性表采用顺序存储结构存储,在第i个位置上插入一个新元素的时间复杂度为()A)O(n) B)O(1) C)O(n2) D)O(n3) 4、顺序循环队列中(数组的大小为6),队头指示front和队尾指示rear的值分别为3和0,当从队列中删除1个元素,再插入2个元素后,front和rear的值分别为() A)5和1 B)2和4 C)1和5 D)4和2 5.在下列排序方法中,()的比较次数与记录的初始排列状态无关。 A. 直接插入排序 B. 起泡排序 C. 快速排序 D. 简单选择排序 6、设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当以列为主序存放时,元素A[5,8]的存储首地址为( ) A)BA+41 B)BA+180 C)BA+222 D)BA+225 7、下面哪个术语与数据的存储结构无关() A)顺序表B)链表C)散列表D)队列 8、在一棵高度为k的满二叉树中,结点总数为() A)2k-1 B)2k C)2k-1D)⎣log2k⎦+1 9、一棵完全二叉树上有1 001个结点,其中叶子结点的个数为() A)250 B)500 C)254 D)501 10、利用二叉链表存储树,则根结点的右指针是() A)指向最左孩子 B)指向最右孩子 C)空 D)非空 11、若邻接表中有奇数个边结点,则一定() A)图中有奇数个顶点B)图中有偶数个顶点C)图为无向图D)图为有向图 12、无向图G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列正确的是() A)abecdf B)acfebd C)aebcfd D)aedfcb 13、在一个带权连通图G中,权值最小的边一定包含在G的() A)最小生成树中B)深度优先生成树中C)广度优先生成树中D)深度优先生成森林中 14、已知含10个结点的二叉排序树是一棵完全二叉树,则该二叉排序树在等概率情况下查找成功的平均查找长度等于() A)1.0 B)2.9 C)3.4 D)5.5 15、下面的序列中初始序列构成最小堆(小根堆)的是() A)10、60、20、50、30、26、35、40 B)70、40、36、30、20、16、28、10 C)20、60、50、40、30、10、8、72 D)10、30、20、50、40、26、35、60 二、应用题 1、已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,……,n m个度为m的结点,问该树中有多少个叶子结点?要求写出分析过程。 2、已知一棵二叉树的中序遍历的结果为ABCEFGHD,后序遍历的结果为ABFHGEDC,试画出此二叉树。 3、设用于通信的电文由8个字母组成,字母在电文中出现的频率分别为:7,19,2,6,32,3,21,10。试为这八个字母设计哈夫曼编码,并求出总码长。 4、对于下图,从顶点V0出发,按照普里姆算法求出它的最小生成树,画出求解过程。 5、设散列表长度为11,散列函数H(x) = x%11,给定的关键字序列为1,13,12,34,38,33,27,22。试画出分别用拉链法和线性探测法解决冲突时所构造的散列表,并求出在等概率的情况下,这两种方法查找成功时的平均查找长度。 6、对下面关键字序列,写出采用希尔排序算法进行排序的每一趟的结果。其中增量序列的取值为{5,3,1}。(125,11,22,34,15,44,76,66,100,8,14,20,2,5,1) 三、编程题 注意:先进行类型定义,再写算法。 1、已知一个顺序表中的各结点值是从小到大有序的,设计一个算法,插入一个值为x的结点,使顺序表中的结点仍然是从小到大有序(不考虑空间不够用的情况)。 2、设计一个算法,判断一个单链表中的各个结点值是否递增有序(带头结点的单链表)。 3、编写一个函数,求一棵给定二叉树中叶子结点的个数(提示:采用任何一种遍历方法都可以)。 V1 7 8 6 4 8 7 3 1 V0 V2 V5 V3 V4

国家开放大学电大《数据结构》网络课综合应用题题库及答案

国家开放大学电大《数据结构》网络课综合应用题题库及答案综合应用题 题目32 (1 )以3,4,5 , 8 9,作为叶结点的权,构造一梆哈夫曼树.该快J的帝权路径长度为B A. 64 B.65 C. 62 D. 66 (2)权重为3的叶结卓的哈夫曼循码为C t V . A.010 B.DTD1 €.000D.0111 题目33 (1 )以2 3 4,7 . 8,9作为0简点的权枸『桦昭夫蔓枸岫的希权路径长度为日 A t66 B: 80 G r62 D: 87 12>权重值为4的叶结点的哈夫曼编码为C =力. A.0001? B; 1110 C.001 D. 110 题目34 (1)已知某二叉树的后序遍历序列是debca,中序遍历序列是dbeac,该二叉树的根结点是b S A® B. c C.b D. a (2)先序遍历序列是C S / ■ A.re.bx.d.a B:.x.a.b.,d.e C; a,b,d,e,e D. a.c,b.d t e, 题目35 (1)已知某二叉树的先序遍历序列是Mcdb,中序颠序列是eadcb,该二叉树的根结点是D € A.: e :B cD. a A. e.d.D.c.a 0. c^.b.^.e C a.b.d.e.c D. a.c.b.d.e. 题目36

(1)以结定权重•值5, 6, 17,修,25, 30,为叶结点,建立一棵哈夫曼树,该树的中序遍历序列为v A. 5,lh28.6,17.58.30.101,18,43,25 日,'5,11,6t28,17;58,30;10h18,43,15 ▼ Q*• • * • • * ■、••- , J. • Ci:5>11.6,28,101, 58. 30. 17.18,43.25 D;•务lb6, ;2&17,5MSO,10b18,25,: 43 (2)极重值为6的叶结点的哈夫曼为D t . A. 1DD1 B.D11。.0。1 D.0DD1 题目23 (1) 设查找表为27,29,55,68) ,画出对上述直歧进行折半直找所对应的判定树,为了成功查 好I元<14裁依次与E G行比较 A. 23.10.1.14323,29,27,14 C 23.1D.11.14 D.23.29,55,14 (2) 在等祗率条f牛下・成功查找的平均比较次数为B# 八 A.24/9 B.25/9 C.3 D.2.5 题目24 题目25

数据结构典型例题集

基本概念典型例题 一、单项选择题 [例6-1]数据结构用集合的观点可以表示为一个二元组DS=(D,R)。其中,D是( ①)的有穷集合,R是D上( ②)的有限集合。 ①A.算法B. 数据元素C. 数据操作D. 逻辑结构 ②A. 操作B. 映像C. 存储D.关系 解析:由数据结构的集合形式化定义可知,本题答案为:①B;②D。 [例6-2]数据的常用存储结构中不包括( )。 A.顺序存储结构B.线性结构C.索引存储结构D.散列存储结构解析:数据通常有四种基本的存储方法,即顺序存储方法、链式存储方法、索引存储方法和散列存储方法。由此可知,本题答案为:B。 [例6-3] 算法指的是( ①),它必须具备( ②)这三个特性。 ①A.计算方法B.排序方法C.解决问题的步骤序列D.调度方法 ②A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性 C.确定性、有穷性、稳定性D.易读性、稳定性、安全性 解析:算法是对特定问题求解步骤的一种描述,是由若于条指令组成的有限序列。它必须满足以下性质:输人性、输出性、有穷性、确定性、无二义性和可行性。由此可知,本题答案为:①㈠②B。 [例6-4] 在下面的程序段中,对x的赋值语句的执行频度为( )。 for(i=0;i

相关主题
相关文档
最新文档