考研数据结构大题整合_组三(LZH组)
创始人
2024-03-15 12:51:10
0

考研数据结构大题整合

目录

  • 考研数据结构大题整合
    • 三、LZH组
      • LZH 组一
      • LZH 组二
      • LZH 组三
      • LZH 组四
      • LZH 组五
      • LZH 组七

三、LZH组

LZH 组一

给出如图所示的无向图G的邻接矩阵和邻接表两种存储结构.
在这里插入图片描述


(2)解答下面的问题(6分)
(1) 求网的最小生成树有哪些算法?各适用何种情况?为什么?
(2) 由以下的网络邻接矩阵,画出一棵最小生成树
在这里插入图片描述


(3)已知一棵非空二叉树,其按中根和后根遍历的结果分别为:
中根:CGBAHEDJFI 后根:GBCHEJIFDA
试将这样的二叉树构造出来。若已知先根和后根的遍历结果,能否构造出这棵二叉树,为什么? 5分


(4)一项工程由P1、P2、…P6六项子工程组成, 这些工程之间有下列关系: P1


(5)假定用于通信的电文由8个字母A,B,C,D,E,F,G,H组成,各字母在电文中出现的概率为5%,25%,4%,7%,9%,12%,30%,8%,试为这8个字母设计哈夫曼编码。(7分)


五、 (1) 读程序,分析其时间复杂度: 4分

m = 91;
n = 100;
while (n > 0)if (m > 0){m = m - 10;n = n - 1;}elsem = m + 1;

此程序的时间复杂度是____________ 。


(2)以下程序为求二叉树深度的递归算法,请填空完善之 6分

typedef struct node
{char data;struct node lchild, rchild;
} *bitree;int depth(bitree bt) /* bt为根结点的指针*/
{int hl, hr;if (br == NULL)return (____________);hl = depth(bt->lchild);hr = depth(bt->rchild);if (____________)____________________return(hr + 1);
}

(3)已知N元整型数组a 存放N个学生的成绩,已按由大到小排序,以下算法是用折半查找方法统计成绩大于或等于x分的学生人数,请填空完善之。6分

#define N                 /*学生人数*/
int uprx(int a[N], int x) /*函数返回大于或等于x分的学生人数 */
{int head, mid, rear;do{mid = (head + rear) / 2;if (x <= a[mid])____________________else________________;} while (____________);if (a[head] < x)return head - 1;return head;
}

(4)简述以下算法的功能:4分

void BB(LNode *s, LNode *q)
{p = s;while (p->next != q)p = p->next;p->next = s;
}
void AA(LNode *pa, LNode *pb)
{ // pa和pb分别指向单循环链表中的两个结点BB(pa, pb);BB(pb, pa);
}

LZH 组二

(2) 用普里姆算法构造出如图所示的图G的一棵最小生成树. 6分
在这里插入图片描述


(3)已知序列{17,18,60,40,7,32,73,65,85},请给出采用起泡排序法对该序列作升序排序时的每一趟的结果。 (6分)


(4)输入下列整数序列,画出建立的二叉排序树,最后分别图示将其中的50,86删除后的二叉排序树(7分)。
(86,50,78,59,90,64,55,23,100,40,80,45)


(5)一棵完全二叉树共有21个结点,现顺序存放在一个向量中,向量的下标正好为结点的序号,请问有序号为12的双亲结点存在吗?为什么?5分


五、 (1) 读程序,分析时间复杂度 4分

for (i = 0; i < m; i++)for (j = 0; j < t; j++)c[i][j] = 0;
for (i = 0; i < m; i++)for (j = 0; j < t; j++)for (k = 0; k < n; k++)c[i][j] = c[i][j] + a[i][k] * b[k][j];

此程序的时间复杂度是_________ 。


(2)以下程序的功能是实现带附加头结点的单链表数据结点逆序连接,请填空完善之 6分

void reverse(pointer h)
{pointer p, q;p = h->next;h->next = NULL;while (__________){q = p;p = p->next;q->next = h->next;h->next = _______________________;}
}

(3)二叉排序树的结点类型如下:6分

typedef struct node
{datatype data;struct node *lchild, *rchild;
} bitreptr;
请在下面算法划线处填上适当内容,以完成在二叉排序树中查找键值为k的结点。bitreptr *search(t, k) /*在二叉排序树上查找键值k的结点 *//*成功时返回指向该结点的指针,否则返回空指针*/
{bitreptr *t;datatype k;if (t = = NULL)returen NULL;else if (t->data = = k)return t;else if (t->data > k)________;else if (t->data < k)_____________;
} /*search*/

(4)阅读下述程序,指出其输出结果:4分

void g(int **);
main()
{int line[100], i;int *p = line;for (i = 0; i < 100; i++){*p = i;g(&p);}for (i = 0; i < 100; i++)cout << line[i];
}
void g(int **p)
{(**p)++;(*p)++;
}

LZH 组三

四、画图/计算/证明 (30分)
1. 证明题(5分)
试证明有n0个叶子的哈夫曼树共有2n0-1个结点。


2.一项工程由P1、P2、…P6六项子工程组成, 这些工程之间有下列关系: P1


  1. 已知一棵二叉树的中序遍历序列为:BAFDJGCKHLEIM,后序遍历序列为BFJGDKLHMIECA.请完成(6分)
    1. 构造出这颗二叉树;
    2. 画出这颗二叉树中序线索化后的结构

  1. 对长度为8的有序表,给出折半查找的判定树,给出等概率情况下的平均查找长度。(5分)

  1. (9分) 已知一个图G=(V,E),其中V={a,b,c,d,e,f};
    E={,,,,,,,,}
    (1) 请画出该图,并写出邻接矩阵
    (2) 根据邻接矩阵,分别给出从顶点a出发的深度优先和广度优先遍历序列
    (3) 画出由此得到的深度优先和广度优先生成树(或森林)

五. 程序填空题 (20分,每个函数5分)

  1. 用链表表示数据的简单选择排序,结点的域为数据域data,指针域next,链表首指针为head,链表无头结点。
selectsort(head)
{p = head;while (p ___________){q = p;r = ___________;while (___________){if (q->next->data > r->data)q = r;r = ___________;}tmp = q->data;q->data = p->data;p->data = tmp;p = ___________;}
}

  1. n个顶点的有向图用邻接矩阵array表示,下面是其拓扑排序算法,试补充完整。注:
    (1) 图的顶点号从0开始计;
    (2) indegree是有n个分量的一维数组,放顶点的入度;
    (3) 函数crein用于计算顶点的入度;
    (4) 有三个函数push(data)、pop()、check(),它们的含义为数据data进栈、退栈和测试栈是否为空(不空返回1,否则返回0)。
#include crein(array, indegree, n)
{for (i = 0; i < n; i++)indegree[i] = _______;for (i = 0; i < n; i++)for (j = 0; j < n; j++)indegree[i] += array[_______][_______];
}topsort(array, indegree, n)
{count = _______;for (i = 0; i < n; i++)if (_______)push(i);while (check()){vex = pop();cout << vex;count++;for (i = 0; i < n; i++){k = array _______;if (_______){indegree[i]--;if (_______)push(i);}}}
}

3.设顺序表la的数据结构定义如下:

typedef struct
{Datatype list[Maxnum];int num;
} SeqList;

试将下面删除顺序表la中所有值为x的数据元素的算法补充完整。

void DeleteSeqList(SeqList *la, Datatype x)
{int j, k;for (j = 1; j <= la->num; j++){if (){for (k = j; k < la->num; k++);la->num--;j--;}}
}

LZH 组四

四、 画图/计算/证明/应用题 (30分)
(1) (6分)
试说明是否存在这样的二叉树,可以实现后序线索树进行后序遍历时不使用栈?对前序线索二叉树进行前序遍历时,什么样的二叉树可不使用栈?


(2)解答下面的问题(6分)
(1) 求网的最小生成树有哪些算法?各适用何种情况?为什么?
(2) 由以下的网络邻接矩阵,画出一棵最小生成树
在这里插入图片描述


(3)已知一棵非空二叉树,其按中根和后根遍历的结果分别为:
中根:CGBAHEDJFI 后根:GBCHEJIFDA
试将这样的二叉树构造出来。若已知先根和后根的遍历结果,能否构造出这棵二叉树,为什么? 5分


(4)对于如图所示的事件结点网络,求出各活动可能的最早开始时间和允许的最晚完成时间,并问哪些活动是关键活动? (6分)

在这里插入图片描述


(5)已知某字符串S共有8种字符,各种字符分别出现2次、1次、4次、5次、7次、3次、4次和9次,对该字符串用{0,1}进行前缀编码,问该字符串的编码至少有多少位?(7分)


五、 程序填空题 (20分)
(1) 读程序,分析其时间复杂度: 4分

m = 91;
n = 100;
while (n > 0)if (m > 0){m = m - 10;n = n - 1;}elsem = m + 1;

此程序的时间复杂度是 _________ 。


(2)以下程序为求二叉树深度的递归算法,请填空完善之 6分

typedef struct node
{char data;struct node lchild, rchild;
} *bitree;int depth(bitree bt) /* bt为根结点的指针*/
{int hl, hr;if (br == NULL)return (_________);hl = depth(bt->lchild);hr = depth(bt->rchild);if (_________)return (hr + 1);
}

LZH 组五

四、画图/计算/证明 (30分)
1. 如果二叉树有n个结点,试问:当执行中序遍历的递归程序时,在最坏情况下为处理递归调用所设的单元至少要有多少个才行?(5分)


2.n个结点的m叉树转化为二叉树所需存储资源比未转化前用定长结点存储节省多少?(设链域占两个单元,数据域占一个单元)(5分)


  1. 已知一棵二叉树的中序遍历序列为:BAFDJGCKHLEIM,后序遍历序列为BFJGDKLHMIECA.请完成(6分)
    1. 构造出这颗二叉树;
    2. 画出这颗二叉树中序线索化后的结构

  1. 对长度为8的有序表,给出折半查找的判定树,给出等概率情况下的平均查找长度。(5分)

  1. (9分)假定有下列n*n矩阵(n为奇数)
    在这里插入图片描述1)A中非零元素的行下标与列下标的关系;
    2)给出A中非零元素aij的下标(i,j)与B中的下标R的关系;
    3)假定矩阵中每个元素占一个存储单元,且B的起始地址为A0,给出利用aij的下标(i,j)定位在B中的位置公式。

LZH 组七

四、画图/计算/证明 (30分)
1. 试说明一棵二叉树进行前序、中序、后序遍历,其叶结点的相对次序是否会发生改变?为什么?(5分)


2.n个结点的m叉树转化为二叉树所需存储资源比未转化前用定长结点存储节省多少?(设链域占两个单元,数据域占一个单元)(5分)


  1. 已知一棵二叉树的中序遍历序列为:BAFDJGCKHLEIM,后序遍历序列为BFJGDKLHMIECA.请完成(6分)
    1. 构造出这颗二叉树;
    2. 画出这颗二叉树中序线索化后的结构

  1. 对长度为8的有序表,给出折半查找的判定树,给出等概率情况下的平均查找长度。(5分)


// ToDo## 四、LB组
### LB组一
### LB组二
### LB组三
### LB组四
### LB组五
### LB组六
### LB组七
### LB组八

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...