else {
p->rear= ; tail=p->rear; p->data[tail]=x; return (1); }
}
int DEQUEUEQS(SeqQueue *p,datatype *px) {
datatype Member1;
if(p->front==p->rear) {printf(“\\n队列空啦!\\n”);return else{
p->front= ; Member1=p->data[p->front]; *px= ; return (1); } }
/*文件myqueue.h*/ /*测试程序部分*/ #include
int i,abc[10]={9,8,7,6,5,4,3,2,1,10}; datatype in1,out1; SeqQueue myQue,*pQ; pQ=&myQue; SETNULLQS(pQ);
printf(“进入队列的元素依次是:\\n”); for(i=1;i<=10;i++) {
printf(“%d\\t”,abc[i-1]); in1=abc[i-1];
ENQUEUEQS(pQ,in1); }
printf(“\\n从队列中删除的元素依次是:\\n”); for(i=1;i<=10;i++) {
in1=abc[i-1];
DEQUEUEQS(pQ,&out1); printf(“%d\\t”,out1); }
0);} (}
6. 下面一段程序的功能是完成线性表的插入操作运算(要在线性表的第i个位置插入元素)
请仔细阅读程序,完成两个要求:
(1) 在画线空白处填入合适的语句,使得整个程序完整; (2) 请画出以下程序的流程图。 #define Maxlen 1024 struct sqlisttp { int elem[maxlen]; int last; } sqlisttp;
int Insert(sqlisttp L, int i, int x) { int k; if(i<1|| i>v.last+1)
printf(“插入位置不合适!\\n”) else if(v.lat>=maxlen-1) printf(“线性表已满!\\n”) else { for(k=v.last; k>=i; k--) ; ; ; } }
非线性数据结构部分:
一、填空题
1. 不考虑顺序的3个结点可构成 种不同形态的树, 种不同形态的二叉树。 2. 已知某棵完全二叉树的第4层有5个结点,则该完全二叉树叶子结点的总数
为: 。
3. 已知一棵完全二叉树的第5层有3个结点,其叶子结点数是 。
4. 一棵具有110个结点的完全二叉树,若i=54,则结点i的双亲编号是 ;结点i
的左孩子结点的编号是 ,结点i的右孩子结点的编号是 。
5. 一棵具有48个结点的完全二叉树,若i=20,则结点i的双亲编号是______;结点i
的左孩子结点编号是______,右孩子结点编号是______。 6. 在有n个叶子结点的Huffman树中,总的结点数是:______。
7. 图是一种非线性数据结构,它由两个集合V(G)和E(G)组成,V(G)是______的非空有限
集合,E(G)是______的有限集合。
8. 遍历图的基本方法有 优先搜索和 优先搜索两种方法。 9. 图的遍历基本方法中 是一个递归过程。
10. n个顶点的有向图最多有 条弧;n个顶点的无向图最多有 条边。 11. 在二叉树的二叉链表中,判断某指针p所指结点是叶子结点的条件是 。 12. 在无向图G的邻接矩阵A中,若A[i,j]等于1,则A[j,i]等
于 。
二、单项选择题
1. 树型结构的特点是:任意一个结点:( )
A、可以有多个直接前趋 B、可以有多个直接后继 C、至少有1个前趋 D、只有一个后继 2. 如下图所示的4棵二叉树中,( )不是完全二叉树。
A B C D
3. 深度为5的二叉树至多有( )个结点。
A、16 B、32 C、31 D、10 4. 64个结点的完全二叉树的深度为:( )。
A、8 B、7 C、6 D、5 5. 将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编
号,根结点编号为1,则编号为49的结点的左孩子的编号为:( )。 A、98 B、99 C、50 D、48 6. 在一个无向图中,所有顶点的度之和等于边数的( )倍。 A、1/2 B、1 C、2 D、4
7. 设有13个值,用它们组成一棵Huffman树,则该Huffman树中共有( )个结点。 A、13 B、12 C、26 D、25
8. 若对一棵有16个结点的完全二叉树按层编号,则对于编号为7的结点x,它的双亲结
点及右孩子结点的编号分别为( )。
A、2,14 B、2,15 C、3,14 D、3,15
9. 若对一棵有20个结点的完全二叉树按层编号,则对于编号为5的结点x,它的双亲结
点及左孩子结点的编号分别为( )。
A、2,11 B、2,10 C、3,9 D、3,10 10. 将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编
号,根结点编号为1,则编号最大的非叶结点的编号为:
A、48 B、49 C、50 D、51 11. 无向图的邻接矩阵是一个( )。 A、对称矩阵 B、零矩阵 C、上三角矩阵 D、对角矩阵 12. 由64个结点构成的完全二叉树,其深度为:( )。 A、8 B、7 C、6 D、5
13. 若对一棵有16个结点的完全二叉树按层编号,则对于编号为7的结点x,它的双亲结
点及右孩子结点的编号分别为( )。
A、2,14 B、2,15 C、3,14 D、3,15 14. 图示二叉树的中序遍历序列是:( ) a
b c
d g
e
f
A、abcdgef B、dfebagc C、dbaefcg D、defbagc 15. 图示二叉树的后序遍历序列是:( )
A
B C
E D
F G H
A、ABCDEFGH B、BDAFEHGC C、DBFHGECA D、HGFEDCBA 16. 邻接表是图的一种( )。
A、顺序存储结构 B、链式存储结构 C、索引存储结构 D、散列存储结构 17. 给定有向图如右图所示,则该图的一个强连通分量是:( )。 A、{A,B,C,F} B、{B,C,F} C、{B,C,D,F} D、{C,D,E,F}
18. 已知一个有向图的邻接矩阵表示,要删除所有从第i个结点发出的边,应该: A、将邻接矩阵的第i行删除 B、将邻接矩阵的第i行元素全部置为0 C、将邻接矩阵的第i列删除 D、将邻接矩阵的第i列元素全部置为0