《数据结构》模拟题(一)
一、单选题 (每空2分,共10分)
1、某程序的时间复杂度为(3n+nlog2n+n2+8), 其数量级表示为( )。 A.O(n) B.O(nlog2n)
C.O(n2) D.O(log2n) 2、队列的插入操作是在( )进行。
A.队首 B.队尾 C.队前 D.对后 3、二叉树上叶结点数等于( )。
A.分支结点数加1 B.单分支结点数加1
C.双分支结点数加1 D.双分支结点数 减1
4、每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此种排序方法叫做( )排序
A.插入 B.交换 C.选择 D.归并
5、在一个图中,所有顶点的度数之和等于所有边数的( )倍。
A.2 B.1 C.3 D.4
二、填空题(每空1分,共20分)
1、一个算法应具备的5个特性为 、 、 、 、 。
2、在采用独立结点构成的双向链表中,设p和q 分别是具有Dnode * 类型的指针变量。若双向链表中p结点之后插入一个q结点,其操作步骤为:
; ; ; ;
3、表示图的三种存储结构为 、 和 。 4、假定一棵二叉树广义表表示为a(b(c,d),e(,f)),则对它进行的先序遍历结果为____________,中序遍历结果为____________,后序遍历结果为____________,按层遍历结果为____________。
5、当从一个小根堆中删除一个元素时,需要把________元素填补到________位置,然后再按条件把它逐层________调整。
6、二叉搜索树的中序遍历得到的结点序列为____ ____。
三、运算题(每小题5分,共10分)
1、已知一个中缀算术表达式为: 3+4*(25-(6/15))-8@ ,写出对应的后缀算术表达式。
2、对以下图,试给出一种拓扑序列,若在它的邻接表存储结构中,每个顶点邻接表中的边结点都是按照终点序号从大到小链接的,则按此给出唯一一种拓扑序列。 2
0 5 7
1 3 6 4 8 9 四、阅读算法,回答问题(每小题5分,共20分)
1、int AA(LNode *HL , ElemType x)
{
int n=0;
LNode *p=HL;
while (p!=NULL) {
if (p->data= =x) n++; p=p->next;
}
return n; }
对于结点类型为LNode的单链表,以上算法的功能为:
2、int BB(ElemType A[], int n, KeyType K) {
for (int i=0;i if (A[i].key = =K) break; if (i 该算法的功能是: 3、 void CC( Stack &S) { Pop(S); Push(S,50); Push(S,45); Peek(S); } 假定调用算法时栈S 中已有2个元素(23,16)的栈,其中23时栈底,调用后得到的栈内容为(从栈底开始排列): 4、void DD(ElemType A[],int n) { ElemType x; int i,j,flag;