首页 数据结构样题

数据结构样题

举报
开通vip

数据结构样题《数据结构》 样题 1、 选择填空题(每题2分) 1. 单链表中,删去p指向的结点的后继结点,可以执行( )操作实现。 A. p->link = p->link->link; B. p->link = NULL; C. p->link->link = NULL; D. 以上都不是 2. 一个栈的输入序列是a,b,c,d,e,则下列哪个是合法输出序列( )。 A. b c d a e B. e d a c b C. e c a d b D. 以上都不是 3. 设A为8×10的二维...

数据结构样题
《数据结构》 样题 1、 选择填空题(每题2分) 1. 单链表中,删去p指向的结点的后继结点,可以执行( )操作实现。 A. p->link = p->link->link; B. p->link = NULL; C. p->link->link = NULL; D. 以上都不是 2. 一个栈的输入序列是a,b,c,d,e,则下列哪个是合法输出序列( )。 A. b c d a e B. e d a c b C. e c a d b D. 以上都不是 3. 设A为8×10的二维数组,每个数组元素的长度为4个字节,数组元素以行为主序存放,且数组首地址为SA,则元素A[6][8]的起始地址为( )。 A. SA+68 B. SA+272 C. SA+232 D. 以上都不是 4. 一组 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 的关键字为{40,80,55,45,42,85},则利用堆排序的方法建立的初始堆(大顶堆)为( )。 A. 80 45 50 40 42 85 B. 85 80 55 40 42 45 C. 85 80 55 45 42 40 D. 以上都不是 5. 设有n个结点的完全二叉树顺序存放在数组A[0…n-1]中,对任意结点A[i],若A[i]有右孩子结点,则其右孩子结点是( ) A. A[i/2] B. A[2*i] C. A[2*i+1] D. A[2*i+2] 6. 顺序查找方法中,设置“监视哨”是为了( )。 A. 减少比较次数 B. 减少记录移动次数 C. 防止越界错误 D. 以上都不是 7. 以下关于“堆”的叙述,正确的是( )。 A. 堆是二叉排序树 B. 堆是满二叉树 C. 堆是完全二叉树 D. 以上都不是 8. 快速排序的最优时间复杂度为( )。 A. O(n) B. O(n2) C. O(nlog2n) D. 以上都不是 9. 下面( )方法可以判断出一个有向图中是否有环(回路)。 A. 深度优先遍历 B. 拓扑排序 C. 广度优先遍历 D. 求关键路径 2、 判断题(每题2分) 1. 线性表的链式存储结构优于顺序存储结构。 2. 循环队列是允许在两端都可以插入和删除的线性表。 3. Shell排序是稳定的排序算法。 4. 二叉树是度为2的树。 5. 二叉树的先序遍历序列和中序遍历序列可以惟一确定这棵二叉树。 6. 有n(n>=1)个顶点的无向连通图最少有n条边。 7. 完全二叉树中,若一个结点没有左孩子,则它必是叶子结点。 8. 折半查找只能在顺序表上进行。 3、 简答题 给定以下关键字序列:{31,25,49,25*,93,62,75,08,37,61,54},完成第1、2小题。 1. 以上述关键字序列作为输入, (1) 请画出相应的二叉排序树; 2. 请分别写出直接选择法排序、冒泡法排序、快速排序法(取第一个元素为基准元素)、Shell排序(取初始间距为5)的第一趟排序结果,使待排序序列非递减有序。 3. 请分别写出以下有向图的深度优先遍历序列、广度优先遍历序列和拓扑排序序列。 4、 程序填空题(每空3分,共24分) 1. 下面是折半查找的算法,其中有一些语句缺失,请根据算法的功能补充之。 /* 折半查找 */ /* 参数:list-关键字序列(非递减有序) */ /* 参数:size-关键字序列长度 */ /* 参数:x-待查找元素 */ /* 返回值:若查找成功则返回该元素在序列中的位置,否则返回-1 */ template int binary_search(const ElemType* list, int size, const ElemType& x) { int bot,top; // 当前查找区间,半闭半开区间:[bot,top) int mid; // 区间中点 bot = 0; top = size; while (bot < top) { mid = ① ; if (list[mid] < x) bot = mid+1; else if (list[mid] > x) ② ; else return ③ ; } return -1; } 2. 下面是二叉树后序线索化的非递归算法,其中有一些语句缺失,请根据算法的功能补充之。 // 数据类型定义 typedef struct _BinTreeNodeExt { int lthread, rthread; // 线索标记,1为线索,0为 // 实际孩子结点指针 struct _BinTreeNodeExt *lchild, *rchild; // 左右孩子结点指针 int data; // 数据域 } BinTreeNodeExt; // 结点数据类型 typedef pair StackNodeExt; // 堆栈结点,第一个域(first) // 为结点(1)或树(0)标记; // 第二个域(second)为指针 typedef stack NodeStackExt; // 堆栈数据类型 /* 创建线索化二叉树。 */ /* 参数:root - 树根指针 */ void create_thread(const BinTreeNodeExt *root) { BinTreeNodeExt* q; // q为前驱结点指针 NodeStackExt s; // s为堆栈 int flag; // 若为空树,直接返回。 if ( ① ) return; q = NULL; // 初始时整棵树入栈 s.push(StackNodeExt(0, root)); while (!s.empty()) { // 获取栈顶元素,并出栈 flag = s.top().first; root = s.top().second; s.pop(); if (flag == 1) // 视当前指针为结点指针 { // 若root无左孩子,设置前驱线索标记 if (root->lchild == NULL) { // 设置root的前驱线索标记,root的前驱为q root->lthread = 1; ② ; } // 若前驱结点q存在,且无右孩子,设置后继线索标记 if ( ③ ) { // 设置q的后继线索标记,q的后继为root q->rthread = 1; q->rchild = root; } // 前驱结点指针q向后推移 ④ ; } else // 视当前指针为树的根指针 { // 1: 当前根结点入栈 ⑤ ; // 2: 如有右子树,右子树根指针入栈 if (root->rchild) s.push(StackNodeExt(0, root->rchild)); // 3: 如有左子树,左子树根指针入栈 if (root->lchild) s.push(StackNodeExt(0, root->lchild)); } } return; } 5、 编程题(2小题,共16分) 1.(10分) 编写程序,删除带头结点的单链表中值大于min且小于max(min < max)的所有元素,并释放相对应结点的空间。编写程序时,请使用以下的数据类型定义和函数原型,只需要完成该函数的实现部分即可。 // 单链表结点数据类型定义 typedef struct _listNode { int data; struct _listNode* link; } ListNode; /*函数的原型 */ /* 参数:head- 单链表头结点指针 */ /* 参数:min、max为删除结点的取值范围*/ void DeleteNodes(ListNode* &head, int min, int max); 2.(6分)编写一个算法(递归或非递归算法均可),统计一棵二叉树中非叶结点的个数。编写程序时,请使用以下结点数据类型定义和函数原型,只需要完成该函数的实现部分即可。 // 结点数据类型定义 typedef struct _BinTreeNode { int data; // 数据域 struct _BinTreeNode *lchild, *rchild; // 左右孩子结点指针 } BinTreeNode; // 结点数据类型 // CountInnerNodes统计指定的二叉树中非叶结点的个数 // root 为二叉树根结点指针; // 函数返回值为非叶结点的个数 int CountInnerNodes(const BinTreeNode *root); 6 5 4 3 2 1 PAGE 第 1 页 / 共 4 页
本文档为【数据结构样题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_516457
暂无简介~
格式:doc
大小:79KB
软件:Word
页数:4
分类:互联网
上传时间:2012-09-27
浏览量:13