fccjxxw.com
非常超级学习网 学习超级帮手
当前位置:首页 >> 数学 >>

数据结构试题及答案修改二


试卷一 二、 填空题(每空1分,共28分) 1. 数据结构是指数据及其相互之间的______________。当结点之间存 在M对N(M:N)的联系时,称这种结构为_____________________。 2. 队列的插入操作是在队列的___尾______进行,删除操作是在队列 的____首______进行。 3. 当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空, 则表示栈满的条件是___top==0_____________。 4. 对于一个长度为n的单链存储的线性表,在表头插入元素的时间复 杂度为_________,在表尾插入元素的时间复杂度为____________。 7. 二叉树是指度为2的____________________树。一棵结点数为N的 二叉树,其所有结点的度的总和是_____________。 8. 对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个 ______________。对一棵由算术表达式组成的二叉语法树进行后序遍历 得到的结点序列是该算术表达式的__________________。 9. 对于一棵具有n个结点的二叉树,用二叉链表存储时,其指针总数 为_____________个,其中_______________个用于指向孩子, _________________个指针是空闲的。 10. 若对一棵完全二叉树从0开始进行结点的编号,并按此编号把它顺 序存储到一维数组A中,即编号为0的结点存储到A[0]中。其余类推,则 A[ i ]元素的左孩子元素为________,右孩子元素为_______________,双 亲元素为____________。 11. 在线性表的散列存储中,处理冲突的常用方法有 ________________________和_____________________________两种。 三、 运算题(每题6分,共24分)

1. 已知一个6(5稀疏矩阵如下所示,试: (1) 写出它的三元组线性表; (2) 给出三元组线性表的顺序存储表示。 2. 设有一个输入数据的序列是 { 46, 25, 78, 62, 12, 80 }, 试画出从空树 起,逐个输入各个数据而生成的二叉搜索树。 3. 对于图6所示的有向图若存储它采用邻接表,并且每个顶点邻接表

中的边结点都是按照终点序号从小到大的次序链接的,试写出: 从顶点①出发进行深度优先搜索所得到的深度优先生成树; 从顶点②出发进行广度优先搜索所得到的广度优先生成树; 4. 已知一个图的顶点集V和边集E分别为: V={1,2,3,4,5,6,7}; E={<2,1>,<3,2>,<3,6>,<4,3>,<4,5>,<4,6>,<5,1>,<5,7>,<6,1>,<6,2>,<6,5>}; 若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序 号从小到大的次序链接的,按主教材中介绍的拓朴排序算法进行排序, 试给出得到的拓朴排序的序列。 四、 阅读算法(每题7分,共14分) 1. int Prime(int n) { int i=1; int x=(int) sqrt(n); while (++i<=x) if (n%i==0) break; if (i>x) return 1; else return 0; } 指出该算法的功能; (2) 该算法的时间复杂度是多少? 2. 写出下述算法的功能: void AJ(adjlist GL, int i, int n) { Queue Q; InitQueue(Q); cout<<i<<' '; visited[i]=true; QInsert(Q,i); while(!QueueEmpty(Q)) { int k=QDelete(Q); edgenode* p=GL[k]; while(p!=NULL) {int j=p->adjvex; if(!visited[j]) { cout<<j<<' '; visited[j]=true; QInsert(Q,j); } p=p->next; }}}

HL是单链表的头指针,试写出删除头结点的算法。 ElemType DeleFront(LNode * & HL) 参考答案 二、 填空题(每空1分,共26分) 1. 联系 图(或图结构) 2. 尾 首 3. top==0 4. O(1) O(n) 5. 128 44 108 6. 3 3 7. 有序 n-1 8. 有序序列 后缀表达式(或逆波兰式) 9. 2n n-1 n+1 10. 2i+1 2i+2 (i-1)/2 11. 开放定址法 链接法 12. 快速 归并 三、 运算题(每题6分,共24分) 1. (1) ((1,5,1),(3,2,-1),(4,5,-2),(5,1,5),(6,3,7)) (3分) (2) 三元组线性表的顺序存储表示如图7示。 2. 如图8所示。 3. DFS:((((( BFS:((((( 4. 拓朴排序为: 4 3 6 5 7 2 1 四、 阅读算法(每题7分,共14分) 1. (1) 判断n是否是素数(或质数) (2)O() 2. 功能为:从初始点vi出发广度优先搜索由邻接表GL所表示的图。 六、 编写算法(8分) ElemType DeleFront(LNode * & HL) {if (HL==NULL){ cerr<<"空表"<<endl; exit(1);} LNode* p=HL; HL=HL->next; ElemType temp=p->data; delete p;

return temp; } 试卷十三 一、选择题(30分) 1.下列程序段的时间复杂度为( )。 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]; (A) O(m*n*t) (B) O(m+n+t) (C) O(m+n*t) (D) O(m*t+n) 2.设顺序线性表中有n个数据元素,则删除表中第i个元素需要移动( )个元素。 (A) n-i (B) n+l -i (C) n-1-i (D) i 3.设F是由T1、T2和T3三棵树组成的森林,与F对应的二叉树为B,T1、 T2和T3的结点数分别为N1、N2和N3,则二叉树B的根结点的左子树的结 点数为( )。 (A) N1-1 (B) N2-1 (C) N2+N3 (D) N1+N3 4.利用直接插入排序法的思想建立一个有序线性表的时间复杂度为( )。 (A) O(n) (B) O(nlog2n) (C) O(n2) (D) O(1og2n) 5.设指针变量p指向双向链表中结点A,指针变量s指向被插入的结点 X,则在结点A的后面插入结点X的操作序列为( )。 (A) p->right=s; s->left=p; p->right->left=s; s->right=p->right; (B) s->left=p;s->right=p->right;p->right=s; p->right->left=s; (C) p->right=s; p->right->left=s; s->left=p; s->right=p->right; (D) s->left=p;s->right=p->right;p->right->left=s; p->right=s; 7.设输入序列1、2、3、…、n经过栈作用后,输出序列中的第一个元 素是n,则输出序列中的第i个输出元素是( )。 (A) n-i (B) n-1-i (C) n+l -i (D) 不能确定 8.设散列表中有m个存储单元,散列函数H(key)= key % p,则p最好选 择( )。 (A) 小于等于m的最大奇数 (B) 小于等于m的最大素数 (C) 小于等于m的最大偶数 (D) 小于等于m的最大合数 9.设在一棵度数为3的树中,度数为3的结点数有2个,度数为2的结点 数有1个,度数为1的结点数有2个,那么度数为0的结点数有( )个。 (A) 4 (B) 5 (C) 6 (D) 7 10.设完全无向图中有n个顶点,则该完全无向图中有( )条边。 (A) n(n-1)/2 (B) n(n-1) (C) n(n+1)/2 (D) (n-1)/2

14.设有向无环图G中的有向边集合E={<1,2>,<2,3>,<3,4>,<1, 4>},则下列属于该有向图G的一种拓扑排序序列的是( )。 (A) 1,2,3,4 (B) 2,3,4,1 (C) 1,4,2,3 (D) 1,2,4,3 二、填空题(30分) 1. 设指针p指向单链表中结点A,指针s指向被插入的结点X,则在结点 A的前面插入结点X时的操作序列为:1)s->next=___________;2) p>next=s;3) t=p->data;4) p->data=___________;5) s->data=t; 2.设某棵完全二叉树中有100个结点,则该二叉树中有______________ 个叶子结点。 3. 设某顺序循环队列中有m个元素,且规定队头指针F指向队头元素的 前一个位置,队尾指针R指向队尾元素的当前位置,则该循环队列中最 多存储_______队列元素。 6. 设一组初始记录关键字序列为(20,12,42,31,18,14,28), 则根据这些记录关键字构造的二叉排序树的平均查找长度是 _______________________________。 7. 设一棵二叉树的中序遍历序列为BDCA,后序遍历序列为DBAC, 则这棵二叉树的前序序列为____________________。 8. 设用于通信的电文仅由8个字母组成,字母在电文中出现的频率 分别为7、19、2、6、32、3、21、10,根据这些频率作为权值构造哈夫 曼树,则这棵哈夫曼树的高度为________________。 10. 设无向图G(如右图所示),则其最小生成树上所有边的权值之 和为_________________。 五、算法设计题(20分) 1. 设计计算二叉树中所有结点值之和的算法。 2. 设计将所有奇数移到所有偶数之前的算法。 3. 设计判断单链表中元素是否是递增的算法。 参考答案 二、填空题 1. p->next,s->data 2. 50 3. m-1 4. 6,8 5. 快速,堆 6. 19/7 7. CBDA 8. 6 9. (24,65,33,80,70,56,48) 10. 8 四、算法设计题 1.设计计算二叉树中所有结点值之和的算法。 void sum(bitree *bt,int &s) {if(bt!=0) {s=s+bt->data; sum(bt->lchild,s); sum(bt->rchild,s);} }

2. 设计将所有奇数移到所有偶数之前的算法。 void quickpass(int r[], int s, int t) {int i=s,j=t,x=r[s]; while(i<j) {while (i<j && r[j]%2==0) j=j-1; if (i<j) {r[i]=r[j];i=i+1;} while (i<j && r[i]%2==1) i=i+1; if (i<j) {r[j]=r[i];j=j-1;}} r[i]=x;} 3. 设计判断单链表中元素是否是递增的算法。 int isriselk(lklist *head) {if(head==0||head->next==0) return(1);else for(q=head,p=head->next; p!=0; q=p,p=p->next)if(q->data>p->data) return(0); return(1); } 试卷十四 二、填空题(48分,其中最后两小题各6分) 1. 设需要对5个不同的记录关键字进行排序,则至少需要比较 _____________次,至多需要比较_____________次。 5. 设一棵m叉树脂的结点数为n,用多重链表表示其存储结构,则该 树中有_________个空指针域。 6. 设指针变量p指向单链表中结点A,则删除结点A的语句序列为: q=p->next;p->data=q->data;p->next=___________;feee(q); 7. 数据结构从逻辑上划分为三种基本类型:___________、 __________和___________。 8. 设无向图G中有n个顶点e条边,则用邻接矩阵作为图的存储结构 进行深度优先或广度优先遍历时的时间复杂度为_________;用邻接表 作为图的存储结构进行深度优先或广度优先遍历的时间复杂度为 _________。 .12. 设有向图G中的有向边的集合E={<1,2>,<2,3>,<1,4>,<4, 5>,<5,3>,<4,6>,<6,5>},则该图的一个拓扑序列为 _________________________。 13. 下面程序段的功能是建立二叉树的算法,请在下划线处填上正确 的内容。 typedef struct node{int data;struct node *lchild;________________;}bitree; void createbitree(bitree *&bt) { scanf(“%c”,&ch);

if(ch=='#') ___________;else { bt=(bitree*)malloc(sizeof(bitree)); bt->data=ch; ________;createbitree(bt>rchild);} } 14. 下面程序段的功能是利用从尾部插入的方法建立单链表的算法, 请在下划线处填上正确的内容。 typedef struct node {int data; struct node *next;} lklist; void lklistcreate(_____________ *&head ) { for (i=1;i<=n;i++) { p=(lklist *)malloc(sizeof(lklist));scanf(“%d”,&(p->data));p->next=0; if(i==1)head=q=p;else {q->next=p;____________;}} } 参考答案 一、选择题 二、填空题 1. 4,10 2. O(nlog2n),O(n2) 3. n 4. 1,2 5. n(m1)+1 6. q->next 7. 线性结构,树型结构,图型结构8. O(n2), O(n+e) 9. 8/3 10. (38,13,27,10,65,76,97) 11. (10,13,27,76,65,97, 38) 12. 124653 13. struct node *rchild,bt=0,createbitree(bt->lchild) 14. lklist,q=p


更多相关文章:

非常超级学习网 fccjxxw.com

copyright ©right 2010-2021。
非常超级学习网内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图