文档库 最新最全的文档下载
当前位置:文档库 › 银行业务模拟 离散事件模拟 数据结构 严蔚敏 代码 程序 直接运行

银行业务模拟 离散事件模拟 数据结构 严蔚敏 代码 程序 直接运行

银行业务模拟 离散事件模拟 数据结构 严蔚敏 代码 程序 直接运行
银行业务模拟 离散事件模拟 数据结构 严蔚敏 代码 程序 直接运行

/***

* Experiment of DataStructure file

*

* Copyright (c) 2010-2011, htu zhuzhichao. All rights reserved. *

*Purpose:

*

êμ??á??£?aò?DDμ?3ìDòéè??,2¢?ò°üo???ò????í?§à??aê±???°í3??,ò??°

* ′°?ú???óμ??éêó?ˉ?£?a.??DD2aê?í¨1y.

*

* [Public]

* 2010.10 ?ì??3? óúoóê|′ó?÷????ò??¥110?Téá

****/

#define OK 1

#define TRUE 1

#define FALSE 0

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

typedef int Status;

//-----------------ò?DD???ó?£?a

//ê??toíê??t±í

typedef struct QCuEvent

{

int OccurTime;

int NType;

struct QCuEvent *next;

}QCuEvent, *EventList;

//′°?ú?°?óáD?a??

typedef struct QCuElem

{

int ArrivalTime;

int Duration;

struct QCuElem *next;

}QCuElem,*QEptr;

//′°?ú????

typedef struct {

QEptr front;

QEptr rear;

}QCustomerp,*QCupp;

//?÷òa2ù×÷oˉêy

Status OpenForDay(EventList &ev, QCuEvent en, QCupp &q);//?a??

Status CustomerArrived(EventList &ev, QCupp &q, QCuEvent en);//1??íμ?′?

Status CustomerDeparture(EventList &ev, QCupp &q, QCuEvent en);//1??íà??a

void CloseForDay();

//?ù±?2ù×÷oˉêy

Status OrderInser(EventList &ev, QCuEvent en);//°′ê±???3Dò2?è?ê??tμ?ê??t±í

int QLength(QCustomerp qn);//?ó′°?ú?óáD3¤?è

int MinCuQueue(QCupp q);//?ó?ó×??ìμ?′°?ú

Status DelFirstEvent(EventList &ev);//é?3yê??t±í?Dμ?μúò???ê??t

Status InitCuQueue(QCustomerp &qn);//3?ê??ˉ′°?ú?óáD

Status EnCuQueue(QCustomerp &qn,QEptr Q);//??è??óáD

Status DeCuQueue(QCustomerp &qn,QCuElem &Q);//é?3y?óáD?Dμ??a??

Status GetQHead(QCustomerp qn,QCuElem &Q);//??μ??óáD?Dμ?μúò????a??Status DestoryQueue(QCustomerp qn);//?ú?ù?óáD

void Ptint_QStatus(QCustomerp QCu[]);//′òó??óáD3¤?è

void Bank_SimulationFunc();

void test(char str[]);

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

int i=0,e=0,counter=0;

int TotalTime=0,CustomerNum=0; //à????í?§?oá?ê±??,?í?§êy

int CloseTime; //1???ê±??

int windowsnum = 0;

//?÷oˉêy

void main() {

EventList ev; // ê??t±í

QCuEvent en;

QCupp QCu = NULL;

OpenForDay(ev, en, QCu);

while (ev->next)

{

en.NType = ev->next->NType;

en.OccurTime = ev->next->OccurTime;

DelFirstEvent(ev);

if (en.NType == 0)

CustomerArrived(ev, QCu, en);

else

CustomerDeparture(ev, QCu, en);

Ptint_QStatus(QCu);

}

CloseForDay();

}

//?÷òa1|?ü×óoˉêy

Status OpenForDay(EventList &ev, QCuEvent en, QCupp &q)

{

int temp = 0;

printf("??ê?è????úêy??×ó(?òê?è?0ê1ó????ú??×ó):");

scanf("%d",&temp);

if (temp==0) srand((unsigned)time(NULL));

else srand(temp);

printf("??ê?è?óaòμê±??(μ¥??:·??ó):");

scanf("%d",&temp);

CloseTime = temp;

TotalTime = 0;

CustomerNum = 0;

en.OccurTime = 0;

en.NType = 0;

en.next = NULL;

ev = (EventList) malloc(sizeof(QCuEvent));

ev->next = NULL;

OrderInser(ev, en);

printf("??ê?è?°ìàíòμ??μ?′°?úêy(?áéù1??):");

scanf("%d",&windowsnum);

q = (QCustomerp *) malloc((windowsnum+1)*sizeof(QCustomerp));

for (int i=1;i<=windowsnum;i++)

{

InitCuQueue(q[i]);

}

return OK;

}

Status CustomerArrived(EventList &ev, QCupp &q, QCuEvent en)

{

test("1??íμ?′?′|àí<<<<<<<<");

CustomerNum ++;

// 2úéú???úêy

//srand(54);

int durtime = rand()%30+1;

int intertime = rand()%5+1;

// 2?è?μ?′?ê??t±í

QCuEvent enTemp;

int t = en.OccurTime + intertime;

enTemp.OccurTime = t;

enTemp.NType = 0;

enTemp.next = NULL;

if (t < CloseTime) OrderInser(ev, enTemp);

printf("ê±??%d\n",t);

// 2?è?×??ì?ó

QEptr Q;

Q = (QEptr) malloc(sizeof(QCuElem));

Q->ArrivalTime = en.OccurTime;

Q->Duration = durtime;

Q->next = NULL;

int i = MinCuQueue(q);

EnCuQueue(q[i],Q);

// 2?è?à??aê??t

enTemp.OccurTime = en.OccurTime + durtime;

enTemp.NType = i;

enTemp.next = NULL;

if(QLength(q[i]) == 1) OrderInser(ev, enTemp);

return OK;

}

Status CustomerDeparture(EventList &ev, QCupp &q, QCuEvent en) {

test(">>>>>>>>1??íà??a′|àí");

int i = en.NType;

printf("à??aê±??%d\n",en.OccurTime);

if(en.OccurTime>CloseTime)

{

DestoryQueue(q[i]);

}

else{

QCuElem customer;

DeCuQueue(q[i],customer);

// ?í?§?oá?ê±??

TotalTime += en.OccurTime - customer.ArrivalTime;

printf("×üê±???a%d\n",TotalTime);

if (q[i].front->next)

{

GetQHead(q[i],customer);

QCuEvent enTemp;

enTemp.OccurTime = en.OccurTime + customer.Duration;

enTemp.NType = i;

OrderInser(ev, enTemp);

}

}

return OK;

}

void CloseForDay()

{

printf("***************************************\n");

printf("*\n");

printf("* ?ùóD1??íòμ??°ìàí×üê±??:%d·??ó\n", TotalTime);

printf("* òμ??°ìàí1??íêy:%d\n", CustomerNum);

printf("*

???ù??è?°ìàíê±??:%f\n",(float)TotalTime/(float)CustomerNum);

printf("*\n");

printf("***************************************\n");

}

//1|?üêμ??×óoˉêy

Status OrderInser(EventList &ev, QCuEvent en)

{

EventList entemp,qtemp;

entemp = (EventList) malloc(sizeof(QCuEvent));

entemp->OccurTime = en.OccurTime;

entemp->NType = en.NType;

entemp->next = NULL;

if (!ev->next)

{

ev->next = entemp;

return OK;

}

qtemp = ev;

while(qtemp->next&&qtemp->next->OccurTime < en.OccurTime) {

qtemp = qtemp->next;

}

entemp->next = qtemp->next;

qtemp->next = entemp;

return OK;

}

int QLength(QCustomerp qn)

{

QEptr qtemp;

int i=0;

qtemp = qn.front->next;

while(qtemp)

{

qtemp = qtemp->next;

i++;

}

return i;

}

int MinCuQueue(QCupp q)

{

int i,min;

for (i=1,min=1;i<=windowsnum;i++)

{

min = QLength(q[min])<=QLength(q[i]) ? min:i;

}

return min;

}

Status DelFirstEvent(EventList &ev)

{

EventList p;

p = ev->next;

ev->next = p->next;

free(p);

return OK;

}

Status InitCuQueue(QCustomerp &qn)

{

qn.front = (QEptr) malloc(sizeof(QCuElem));

qn.front->next = NULL;

qn.rear = qn.front;

return OK;

}

Status EnCuQueue(QCustomerp &qn,QEptr Q)

{

qn.rear->next = Q;

qn.rear = Q;

return OK;

}

Status DeCuQueue(QCustomerp &qn,QCuElem &Q)

{

QEptr qtemp;

qtemp = qn.front->next;

Q.ArrivalTime = qtemp->ArrivalTime;

Q.Duration = qtemp->Duration;

qn.front->next = qtemp->next;

if(qn.rear == qtemp) qn.rear = qn.front;

free(qtemp);

return OK;

}

Status GetQHead(QCustomerp qn,QCuElem &Q)

{

Q.ArrivalTime = qn.front->next->ArrivalTime;

Q.Duration = qn.front->next->Duration;

return OK;

}

Status DestoryQueue(QCustomerp qn)

{

QEptr p;

while(qn.front->next)

{

p = qn.front->next;

qn.front->next = p->next;

free(p);

}

qn.front->next =NULL;

qn.rear = qn.front;

return OK;

}

void Ptint_QStatus(QCustomerp QCu[])

{

int l;

for(int i=1;i<=windowsnum;i++)

{

l = QLength(QCu[i]);

printf("?óáD%d:3¤%d:",i,l);

for (int n=1;n<=l;n++)

{

printf("@");

}

printf("\n");

}

}

void test(char str[])

{

printf("--%s--\n",str);

}

最新考研计算机数据结构模拟试题及答案(五)

考研计算机数据结构模拟试题及答案(五) 一、选择题(30分) 1. 设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为( )。 (A) 20 (B) 30 (C) 40 (D) 45 2.执行一趟快速排序能够得到的序列是( )。 (A) [41,12,34,45,27] 55 [72,63] (B) [45,34,12,41] 55 [72,63,27] (C) [63,12,34,45,27] 55 [41,72] (D) [12,27,45,41] 55 [34,63,72] 3.设一条单链表的头指针变量为head且该链表没有头结点,则其判空条件是( )。 (A) head==0 (B) head->next==0 (C) head->next==head (D) head!=0 4.时间复杂度不受数据初始状态影响而恒为O(nlog2n)的是( )。 (A) 堆排序(B) 冒泡排序(C) 希尔排序(D) 快速排序 5.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是( )。 (A) 空或只有一个结点(B) 高度等于其结点数 (C) 任一结点无左孩子(D) 任一结点无右孩子 6.一趟排序结束后不一定能够选出一个元素放在其最终位置上的

是( )。 (A) 堆排序(B) 冒泡排序(C) 快速排序(D) 希尔排序 7.设某棵三叉树中有40个结点,则该三叉树的最小高度为( )。 (A) 3 (B) 4 (C) 5 (D) 6 8.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为( )。 (A) O(n) (B) O(n2) (C) O(n1/2) (D) O(1og2n) 9.二路归并排序的时间复杂度为( )。 (A) O(n) (B) O(n2) (C) O(nlog2n) (D) O(1og2n) 10. 深度为k的完全二叉树中最少有( )个结点。 (A) 2k-1-1 (B) 2k-1 (C) 2k-1+1 (D) 2k-1 11.设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为( )。 (A) front->next=s;front=s; (B) s->next=rear;rear=s; (C) rear->next=s;rear=s; (D) s->next=front;front=s; 12.设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为( )。 (A) O(n+e) (B) O(n2) (C) O(ne) (D) O(n3) 13.设某哈夫曼树中有199个结点,则该哈夫曼树中有( )个叶子结点。 (A) 99 (B) 100 (C) 101 (D) 102

数据结构复习模拟题5

第六章树 1. 对于图6.29给出的树,指出树中的根结点、叶结点和分支结点。并指出各个结点的度数和层数。 2. 对图6.29所示的树,采用先根次序、后根次序和中根次序遍历。问得到怎样的结点序列? 3. 对图6.29所示的树,分别采用先根次序的父指针表示法、长子-兄弟表示法,试画出各种方法的图示。 4. 用三个结点A,B,C可以构成多少种不同的二叉树?请把它们画出来。 5. 将图 6.29所示的树转换成对应的二叉树是什么样子?请把它画出来。 6. 请按先根、后根和对称序遍历图6.30所示的二叉树,列出遍历所得的结点序列。 7 请将图6.30所示的二叉树转换成对应的树林,并按先根次序和后根次序遍历树林。 8. 对于给定的一组权值 w={1,4,9,16,25,36,49,64,81,100}, 构造具有Huffman树。并求出它的带权路径长度。 9 给出(a)所示树的双亲链表表示、孩子链表表示、双亲孩子链表表示及孩子兄弟链表表示等四种存储结构,并指出哪些存储结构易于求指定结点的祖先,哪些易于求指定结点的后代? 10.画出下图所示的各二叉树所对应的森林。 11.假设用于通信的电文由字符集{a,b,c,d,e,f,g,h}中的字母构成,这8个字母在电文中出现的概率分别为{0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10}。 1) 为这8个字母设计Huffman编码。 26构造连通网最小生成树的两个典型算法是______。 27.求图的最小生成树有两种算法,______算法适合于求稀疏图的最小生成树。 28. Prim(普里姆)算法适用于求______的网的最小生成树;kruskal(克鲁斯卡尔)算法适用于求______的网的最小生成树。

数据结构模拟试题及答案

数据结构模拟试题一 一、判断题(每小题1 分,共15分) 1.计算机程序处理的对象可分为数据和非数据两大类。 2.全体自然数按大小关系排成的序列是一个线性表。 3.在描述单向链表的结点类型时,必须首先描述数值字段,然后再描述指针字段。 4.顺序栈是一种规定了存储方法的栈。 5.树形结构中的每个结点都有一个前驱。 6.在任何一棵完全二叉树中,最多只有一个度为1的分支结点。 7.若某顶点是有向图的根,则该顶点的入度一定是零。 8.如果某图的邻接矩阵有全零的行,没有全零的列,则该图一定是有向图。 9.用一维数组表示矩阵可以节省存储空间。 10.广义表的长度与广义表中含有多少个原子元素有关。 11.分块查找的效率与线性表被分成多少块有关。 12.散列表的负载因子等于存入散列表中的结点个数。 13.在起泡排序过程中,某些元素可能会向相反的方向移动。 14.按某种逻辑关系组织起来的记录的集合称为逻辑记录。 15.索引非顺序文件的特点是索引表中的索引项不一定按关键字大小有序排列。 二、填空题(每空1分,共15分) 1.顺序表是一种_____________线性表。 2.若用Q[1]~Q[m]作为非循环顺序队列的存储空间,则对该队列最多只能执行___次插入操作。 3.栈和队列的区别在于________的不同。 4.在高度为h(h≥0)的二叉树中至少有___个结点,至多有___个结点。 5.若用二叉链表来存储具有m个叶子,n个分支结点的树,则二叉链表中有___个左指针域为空的结点,有___个右指针域 为空的结点。 6.n个顶点的有根有向图中至少有___条边,至多有___条边。 7.10行20列矩阵若用行优先顺序表来表示,则矩阵中第8行第7列元素是顺序表中第___个元素。 8.在各元素查找概率相等的情况下,用顺序查找方法从含有12个元素的有序表中查找一个元素,元素间的平均比较次数是 _____。 9.在归并两个长度为m的有序表时,排序码的比较次数至少是___次,至多是___次。 10.在高度为3的6阶B-树中,至少有___个关键字,至多有___个关键字。 三、选择题(每题2分,共30分) 1.计算机所处理的数据一般具有某种内在联系性,这是指________。 A.元素和元素之间存在某种关系B.数据和数据之间存在某种关系 C.元素内部具有某种结构D.数据项和数据项之间存在某种关系 2. 假设顺序表目前有4个元素,第i个元素放在R[i]中,1≤i≤4 。若把新插入元素存入R[6],则________。 A.会产生运行错误B.R[1]~R[6]不构成一个顺序表 C.顺序表的长度大于顺序表元素个数,会降低存储空间利用率 D.顺序表元素序号和数组元素下标不一致,会给使用带来麻烦 3. 设H是不带表头结点循环单向链表的表头指针,P是和H同类型的变量。当P指向链表最后一个结点时,_________。A.P所指结点指针字段的值为空B.P的值与H的值相等 C.P所指结点的地址与H的值相等D.P所指结点指针字段的值与H的值相等 4. 栈的定义不涉及数据的__________。 A.逻辑结构B.存储结构C.运算D.逻辑结构和存储结构 5. 设5个元素进栈的顺序是1,2,3,4,5,则出栈的顺序有可能是___________。 A.2,4,1,3,5 B.3,4,1,5,2 C.3,2,4,1,5 D.4,1,3,2,5 6. 若某棵二叉树结点的前序序列和中序序列相同,则该二叉树_________。 A.只有一个结点B.每个结点都没有左孩子C.每个结点都没有右孩子D.不存在 7.对于一棵具有n个结点,度为3的树来说,____________。 A.树的高度至多是n-3 B.树的高度至多是n-2 C.树的最低高度是┏log3(n+1)┓ D.至少在某一层上正好有3个结点 8.n个顶点的有向图如果可以进行拓扑排序,则可以断定该有向图__________。 A.含n个强连通分量B.有唯一的入度为0的顶点C.有多个出度为0的顶点 D.是一个有根有向图 9. 特殊矩阵用行优先顺序表表示,_____________ A.简化了矩阵元素之间的逻辑关系B.便于按行处理矩阵元素

数据结构模拟试题3

数据结构模拟试题(4) 一、填空题:06分,每题02分 1、模板类是一种数据抽象,它把________当作参数,可以实现类的复用。 2、假定对长度n=50的有序表进行折半搜索,则对应的判定树中最底下一层的结点数为______个。 3、第i(i=1,2,...,n-1) 趟从参加排序的序列中取出第i个元素,把它插入到由第0个至第i-1个元素组成的有序表中适当的位置,此种排序方法叫做__________排序。 二、单选题:10分,每题02分 4、 设循环队列的结构是 const int MaxSize=100; typedef int DataT ype; struct Queue { DataT ype data[MaxSize]; int front, rear; }; 若有一个Queue类型的队列Q,试问判断队列满的条件应为( )。 A: Q.front==Q.rear; B: Q.front-Q.rear==MaxSize; C: Q.front+Q.rear==MaxSize; D: Q.front==(Q.rear+1) % MaxSize; 5、已知一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为( )。假定树根结点的高度为0。 A: 3 B: 4 C: 5 D: 6 6、对于长度为n的顺序存储的有序表,若采用折半搜索,则对所有元素的搜索长度中最大的为( )的值向上取整。 A: log2(n+1) B: log2n C: n/2 D: (n+1)/2 7、设无向图的顶点个数为n,则该图最多有()条边。 A: n-1 B: n(n-1)/2

数据结构模拟试题9

一.选择题(每小题1分,共8分) 1.设有一个10阶的对称矩阵a,采用压缩存储方式,以行序为主存储,a[0][0]的存储地址为100,每个元素占1个地址空间,则a[3][2]的地址为()。 (A)102 (B)105 (C)106 (D)108 2.森林转换为二叉树后,从根结点开始一直沿着右子数下去,一共有4个结点,表明()。 (A)森林有4棵树(B)森林的最大深度为4 (C)森林的第一棵树有4层(D)森林有4个结点 3.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为()。 (A)e (B)2e (C)n^2-e (D)n^2-2e 4.在内部排序中,排序时不稳定的有()。 (A)插入排序(B)冒泡排序(C)快速排序(D)归并排序 5.设一数列的顺序为1,2,3,4,5,通过栈结构不可能派成的顺序数列为()。 (A)3,2,5,4,1 (B)1,5,4,2,3 (C)2,4,3,5,1 (D)4,5,3,2,1 6.一个n条边的连通无向图,其顶点的个数至多为()。 (A)n-1(B)n(C)n+1(D)nlog2n 7.总共3层的完全二叉树,其结点数至少有()个。 (A)3 (B)4 (C)7 (D)8 8.已知某算法的执行时间为(n^3+n^2+n)log2(n+2),n为问题规模,则该算法的时间复杂度是()。 (A)O(n)(B)O(n^2) (C)O(log2n)(D)O(n^3log2n) 二.判断题(每题1分,共8分。正确的打√,错误的打×) 1.只要是算法,肯定可以在有限的时间内完成。() 2.无论是线性表还是树,每一个结点的直接前驱结点最多只有一个。() 3.不论是行优先还是列优先,二维数组的最后一个元素的存储位置是一样的。() 4.直接插入排序时,关键码的比较次数与记录的初始排列无关。() 5.二叉树的先序遍历不可能与中序遍历相同。() 6.任何一棵二叉树,不可能没有叶子结点。() 7.一个稀疏矩阵采用三元组法存储不可能是(5,3,7),(5,4,4),(5,3,5)。() 8.一个无序的顺序表不能采用折半查找法进行查找。()。

数据结构模拟试题1

一、单项选择题(在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。每小题2分,共40分) 1、串的长度是()。 A、串中不同字母的个数 B、串中不同字符的个数 C、串中所含字符的个数,且大于0 D、串中所含字符的个数 2、若用数组S[1..n]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。为这两个栈分配空间的最佳方案是()。 A、S1的栈底位置为0,S2的栈底位置为n+1 B、S1的栈底位置为0,S2的栈底位置为n/2 C、S1的栈底位置为1,S2的栈底位置为n D、S1的栈底位置为1,S2的栈底位置为n/2 3、队列操作的原则是()。 A、先进先出 B、后进先出 C、只能进行插入 D、只能进行删除 4、有64个结点的完全二叉树的深度为()(根的层次为1)。 A、8 B、7 C、6 D、5 5、在有n个结点的二叉链表中,值为非空的链域的个数为()。 A、n-1 B、2n-1

C、n+1 D、2n+1 6、带权有向图G用邻接矩阵A存储,则顶点i的人度等于A中()。 A、第i行非∞的元素之和 B、第i列非∞的元素之和 C、第i行非∞且非0的元素个数 D、第i列非∞且非0的元素个数 7、在有n个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为()。 A、0(n) B、0(log2n) C、0(nolg2n) D、0(n2) 8、若表R在排序前已按键值递增顺序排列,则()算法的比较次数最少。 A、直接插入排序 B、快速排序 C、归并排序 D、选择排序 9、下列排序算法中,()排序在某趟结束后不一定选出一个元素放到其最终的位置上。 A、选择 B、冒泡 C、归并 D、堆

数据结构模拟考试试卷

数据结构模拟考试试卷(1卷) 一.判断题(下列各题,正确的请在前面的括号内打√;错误的打×) (√)(1)数据的逻辑结构与数据元素本身的内容和形式无关。 (ㄨ)(2)线性表的链式存储结构优于顺序存储。 (√)(3)将中缀表达式转换成后缀表达式是栈的重要应用。 (×)(4)栈和队列都是顺序存储的线性结构。 (×)(5)“DT”是“DA TA”的子串。 (×)(6)在二叉树中,具有一个子女的父结点,在中序遍历的序列中,它没有后继子女结点。 (×)(7)带权图的最小生成树是唯一的。 (√)(8)散列存储法的基本思想是由关键字的值决定数据的存储地址。 (√)(9)希尔排序是不稳定的排序。 (√)(10)具有n个叶子结点的哈夫曼树共有2n-1个结点。 二.填空题 1.线性结构中元素之间存在一对一关系。 2.树形结构和图形结构合称为:非线性结构。 3.顺序表中逻辑上相邻的元素在物理位置上必须相连。 4.在单链表中要在已知结点*P之前插入一个新结点,需找到*P的直接前趋结点的地址,其查找的时间复杂度为O (n) 。 5.同一栈的各元素的类型相同。 6.已知表达式,求它的后缀表达式是栈的典型应用之一。 7.队列在进行出队操作时,首先要判断队列是否为空。 8.设循环队列的头指针front指向队头元素,尾指针rear指向队尾元素后的一个空闲元素,队列的最大空间为MAXLEN,则队满标志为front==(rear+1)% MAXLEN 。 9.串的链式存储结构简称为链式串。 10.求子串函数SubStr("Today is 30 July,2005",13,4)的结果是: July 。 11.给定如下图所示的二叉树,其层次遍历序列为:ABCEFGH 。 12.将一棵完全二叉树按层次编号,对于任意一个编号为i的结点,该结点右孩子的编号为:2*i+1 。 13.图的遍历有:深度优先搜和 _广度优先搜 __等方法。

《数据结构》模拟试卷一及答案

模拟试卷一 一、单选题(每题 2 分,共20分) 1.以下数据结构中哪一个是线性结构?( ) A. 有向图 B. 队列 C. 线索二叉树 D. B树 2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点, 则执行如下( )语句序列。 A. p=q; p->next=q; B. p->next=q; q->next=p; C. p->next=q->next; p=q; D. q->next=p->next; p->next=q; 3.以下哪一个不是队列的基本运算?() A. 在队列第i个元素之后插入一个元素 B. 从队头删除一个元素 C. 判断一个队列是否为空 D.读取队头元素的值 4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成 ( )个不同的字符串? A.14 B.5 C.6 D.8 5.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。 A. 11 B.35 C. 19 D. 53 图一 6.该二叉树结点的前序遍历的序列为( )。 A.E、G、F、A、C、D、B B. E、A、G、C、F、B、D C. E、A、C、B、D、G、F D. E、G、A、C、D、F、B 7.该二叉树结点的中序遍历的序列为( )。 A. A、B、C、D、E、G、F B. E、A、G、C、F、B、D C. E、A、C、B、D、G、F D. B、D、C、A、F、G、E 8.该二叉树的按层遍历的序列为( )。 A.E、G、F、A、C、D、B B. E、A、C、B、D、G、F C. E、A、G、C、F、B、D D. E、G、A、C、D、F、B 9.下面关于图的存储的叙述中正确的是( )。 A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关 C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关 D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关10.设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建 堆的结果?( )

数据结构模拟试题一及答案汇编

学习-----好资料 数据结构模拟试题一 一、判断题(每小题1 分,共15分) 1.计算机程序处理的对象可分为数据和非数据两大类。 2.全体自然数按大小关系排成的序列是一个线性表。 3.在描述单向链表的结点类型时,必须首先描述数值字段,然后再描述指针字段。 4.顺序栈是一种规定了存储方法的栈。 5.树形结构中的每个结点都有一个前驱。 6.在任何一棵完全二叉树中,最多只有一个度为1的分支结点。 7.若某顶点是有向图的根,则该顶点的入度一定是零。 8.如果某图的邻接矩阵有全零的行,没有全零的列,则该图一定是有向图。 9.用一维数组表示矩阵可以节省存储空间。 10.广义表的长度与广义表中含有多少个原子元素有关。 11.分块查找的效率与线性表被分成多少块有关。 12.散列表的负载因子等于存入散列表中的结点个数。 13.在起泡排序过程中,某些元素可能会向相反的方向移动。 14.按某种逻辑关系组织起来的记录的集合称为逻辑记录。 15.索引非顺序文件的特点是索引表中的索引项不一定按关键字大小有序排列。 二、填空题(每空1分,共15分) 1.顺序表是一种_____________线性表。 2.若用Q[1]~Q[m]作为非循环顺序队列的存储空间,则对该队列最多只能执行___次插入操作。 3.栈和队列的区别在于________的不同。 4.在高度为h(h≥0)的二叉树中至少有___个结点,至多有___个结点。 5.若用二叉链表来存储具有m个叶子,n个分支结点的树,则二叉链表中有___个左指针域为空的结点,有___个右指针域为空的结点。 6.n个顶点的有根有向图中至少有___条边,至多有___条边。 7.10行20列矩阵若用行优先顺序表来表示,则矩阵中第8行第7列元素是顺序表中第___个元素。 8.在各元素查找概率相等的情况下,用顺序查找方法从含有12个元素的有序表中查找一个元素,元素间的平均比较次数是_____。 9.在归并两个长度为m的有序表时,排序码的比较次数至少是___次,至多是___次。 10.在高度为3的6阶B-树中,至少有___个关键字,至多有___个关键字。 三、选择题(每题2分,共30分) 1.计算机所处理的数据一般具有某种内在联系性,这是指________。 A.元素和元素之间存在某种关系B.数据和数据之间存在某种关系 C.元素内部具有某种结构D.数据项和数据项之间存在某种关系 2. 假设顺序表目前有4个元素,第i个元素放在R[i]中,1≤i≤4 。若把新插入元素存入R[6],则________。 A.会产生运行错误B.R[1]~R[6]不构成一个顺序表 C.顺序表的长度大于顺序表元素个数,会降低存储空间利用率 D.顺序表元素序号和数组元素下标不一致,会给使用带来麻烦 3. 设H是不带表头结点循环单向链表的表头指针,P是和H同类型的变量。当P指向链表最后

数据结构期末模拟试题05(有答案)

课程测试试题(卷) ----------------------以下为教师填写-------------------- I、命题院(部):数学与计算机科学学院 II、课程名称:数据结构 III、测试学期:20 -20 学年度第学期 IV、测试对象:学院专业级班 V、问卷页数(A4):页 VI、答卷页数(A4):页 VII、考试方式:闭卷(开卷、闭卷或课程小论文,请填写清楚) VIII、问卷内容:(请老师在出题时安排紧凑,填空题象征性的留出一点空格,学生将所有的答案做在答题纸上的规定位置,并写清楚大题、小题的题号) 一、单选题(每题 2 分,共20分) 1.以下数据结构中哪一个是线性结构?( ) A. 有向图 B. 队列 C. 线索二叉树 D. B树 2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指 向的结点,则执行如下( )语句序列。 A. p=q; p->next=q; B. p->next=q; q->next=p; C. p->next=q->next; p=q; D. q->next=p->next; p->next=q; 3.以下哪一个不是队列的基本运算?() A. 在队列第i个元素之后插入一个元素 B. 从队头删除一个元素 C. 判断一个队列是否为空 D.读取队头元素的值 4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多 可以组成( )个不同的字符串? A.14 B.5 C.6 D.8 5.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为 ( )。

以下6-8题基于图1。 6.该二叉树结点的前序遍历的序列为( )。 A.E、G、F、A、C、D、B B.E、A、G、C、F、B、D C.E、A、C、B、D、G、F D.E、G、A、C、D、F、B 7.该二叉树结点的中序遍历的序列为( )。 A. A、B、C、D、E、G、F B. E、A、G、C、F、B、D C. E、A、C、B、D、G、F E.B、D、C、A、F、G、E 8.该二叉树的按层遍历的序列为( )。 A.E、G、F、A、C、D、B B. E、A、C、B、D、G、F C. E、A、G、C、F、B、D D. E、G、A、C、D、F、B 9.下面关于图的存储的叙述中正确的是( )。 A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关 B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关 C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关 D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关 10.设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述 序列出发建堆的结果?( ) A. a,g,h,m,n,p,q,x,z B. a,g,m,h,q,n,p,x,z C. g,m,q,a,n,p,x,h,z D. h,g,m,p,a,n,q,x,z 二、填空题(每空1分,共26分) 1.数据的物理结构被分为_________、________、__________和___________四 种。 2.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为 _________,在表尾插入元素的时间复杂度为____________。 3.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是 ________________;删除一个结点时,需要执行的操作是 ______________________________(假设栈不空而且无需回收被删除结点)。

数据结构模拟考试题 B

重庆邮电大学20xx——20xx 学年 《数据结构》(54学时)模拟考试题 注意:请仔细阅读题目,按要求答题,并请保持字迹清楚,容易阅读。 选择题(每题2分,共20分) 1.设循环队列中数组的下标范围是0..n-1,其头指针front指向队首元素,rear指向队尾元素,则队列的长度为()。 A.rear-front B.rear-front+1 C.(rear-front+1)%(n+1) D.(rear-front+n+1)%n 2.线性表的链式存储结构与顺序(连续)存储结构相比优点是()A.所有的操作/运算算法简单 B.便于随机存取 C.便于插入和删除 D.便于查找 3.一个栈的输入序列为A,B,C,D,E,则下列序列中不可能是栈的输出序列的是()。 A.B C D A E B.E D A C B C.B C A D E D.A E D C B 4.将一个A[1..20][1..20] (注:下标均从1开始计)的矩阵,按行序为主存放,每个元素占4个存储单元,并且A[1,2]的存储地址是1004,则A[20,2]的地址是()。 A.1004 B.1380 C. 1520 D.2524 5.如一个序列已经基本有序,则采用()算法最节省时间。 A.归并排序 B.插入排序 C.快速排序 D.直接选择排序 6.时间复杂度低,排序时间基本不受待排序序列初始状态的影响,且稳定的排序方法是()。 A.直接选择排序 B. SHELL排序C堆排序 D.归并排序7.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依相同次序从该缓冲区中取出数据打印。该缓冲区作为数据结构是一个()结构。 A. 栈 B.队列 C.表(Table) D.线性表 8.高度为4的二叉平衡树(空树高度为0)最少有()个结点。 A. 12 B. 15 C. 13 D. 7 9.下面四棵树中,数字表示相应叶子结点的权值,则()是哈夫曼树(Huffman Tree)。 10.若无向图G有6个顶点,至少需要()条边,才能保证该图一定是连通图(边可依附任两顶点,但无重复边和自环)。 A. 21 B. 5 C. 12 D. 30 二、填空题(每题2分,共20分) 1. 设栈S和队列Q的初始状态为空,元素a、b、c、d、e、f将依次入栈S, 一个元素出栈后即进入队列Q。若这6个元素出队列的顺序是b、d、c、 f、e、a,则栈S的容量至少应该是,上述过程才不会出错。 2.已知某二叉树的后序遍历序列是BEDCA, 中序遍历序列是BADEC,那么它的前序遍历序列是。 3.已知完全二叉树的第4层(根结点为第1层)总共只有2个结点,则其叶子结点数是。 4.某表达式二叉树按先序遍历的结果为+a*+bcd,令a=6,b=3,c=4,d=2,则

数据结构模拟题及答案

数据结构试题(A05) 一、选择题(共10小题,每小题1分,共10分) 1.下面程序段的时间复杂度是( ) m=0; for(i=1;i<=n;i++) for(j=1;j<=n;j++) m=m+1; A. O(n2) B.O(m+n+1) C.O(m+n) D. O(n) 2.在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是( ) A.p=p->next; B.p->next=p->next->next; C.p->next=p; D.p=p->next->next; 3.在长度为n的顺序表,当在任何位置上删除一个元素的概率相等时,删除一个元素需要移动的元素的平均个数为( ) A.n/2 B.(n-1)/ 2 C.(n+1)/2 D.(n+2)/2 4.一个栈的输入序列为 1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( ) A. 2 3 4 1 5 B. 5 4 1 3 2 C. 2 3 1 4 5 D. 1 5 4 3 2 6.设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为( ) A. r-f B. r-f+1 C. (r-f) mod n+1 D. (r-f+n) mod n 7.以下序列不是堆的是( )。 A.(100,85,98,77,80,60,82,40,20,10,66) B.(100,98,85,82,80,77,66,60,40,20,10) C.(100,85,40,77,80,60,66,98,82,10,20) D.(10,20,40,60,66,77,80,82,85,98,100) 8.在有序表(12,24,36,48,60,72,84)中折半查找关键字72时所需进行的关键字比较次数为( )。 A. 3 B. 4 C. 5 D. 2 9.在待排序的元素序列基本有序的前提下,效率最高的排序方法是( )。 A.选择排序 B.冒泡排序 C.快速排序 D.插入排序 二、填空题(共20小题,每小题1分,共20分) 1、在单链表中,删除指针P所指结点的后继结点的语句是。 2、线性表的两种存储结构分别是和。 3、己知完全二叉树的第4层有5个结点,则其叶子结点数是。 4、将下三角矩阵A[1….8,1….8]的下三角部分逐行地存储到起始地址为1000的内存单元中,已知每个元素占4个单元,则A[7,5]的地址是。 5、有n个结点的强连通有向图G至少有条弧。 7、在有序表A[1….20]中,采用二分查找算法查找元素值等于A[12]的元素,所

数据结构模拟试题

模拟试题1 一、选择题(共10题,每题1分,共10分) 1.下面关于线性表的叙述中,错误的是哪一个?() A.线性表采用顺序存储,必须占用一片连续的存储单元 B.线性表采用顺序存储,便于进行插入和删除操作 C.线性表采用链接存储,不必占用一片连续的存储单元 D.线性表采用链接存储,便于插入和删除操作 2.在一个单链表中,已知q所指结点是p所指结点的前驱,若在p和q之间插入s所指结点,则执行的操作是()。 A. s->next=p->next;p->next=s; B. q->next=s;s->next=p; C. p->next=s->next;s->next=p; D. p->next=s;s->next=q; 3.设有三个元素X,Y,Z顺序进栈,下列得不到的出栈排列是( )。 A.XYZ B. YZX C. ZXY D. ZYX 4.若用一个长度为6的数组来实现循环队列,且当前rear和front的值分别为0和3,则从队列中删除一个元素,再增加两个元素后,rear和front的值分别是( )。 A.1和5 B.2和4 C.4和2 D. 5和1 5.下列说法中正确的是()。 A.二叉树就是度为2的树 B.二叉树中不存在度大于2的结点 C.二叉树中至少有一个结点的度为2 D.二叉树中任何一个结点的度都为2 6.在具有n个结点的二叉链表中,共有()个空指针。 A. n B. n-1 C. n+1 D. 不确定 7.根据二叉树与树的转换关系可知,深度为h的满二叉树对应的森林由()棵树构成。 A.1 B.log2n C. h/2 D. h 8.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。 A.1/2 B.1 C. 2 D. 4 9.对17个元素的查找表做折半查找,则查找长度为5的元素下标依次是()。 A.8,17 B.5,10,12 C.9,16 D.9,17 10.关于排序,下列说法中正确的是()。 A. 稳定的排序方法优于不稳定的排序方法,因为稳定的排序方法效率较高 B. 在顺序表上实现的排序方法在链表上也可以实现 C. 在链表上可以实现简单选择排序,但是难以实现堆排序 D. 就平均性能而言,堆排序最佳 二、填空题(共10空,每空2分,共20分) 1.计算机执行下面的语句时,语句s的执行次数为 _______ 。 for(i=l;i=i;j--) s; 2.队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是_______。3.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是_______ 。

数据结构模拟题

数据结构试题(A)参考答案 班别学号姓名成绩 一、单项选择(每小题2分,共24分) 1.若某线性表的常用操作是取第i个元素及其前趋元素,则采用( A )存储方式最节省时间 A.顺序表 B.单链表 C.双链表 D.单向循环 2.串是任意有限个( B ) A.符号构成的序列 B.字符构成的序列 C.符号构成的集合 D.字符构成的集合 3.设矩阵A(aij,1<=i,j<=10)的元素满足: aij<>0(i>=j,1<=i,j<=10),aij =0 (i

数据结构模拟试题

模拟试题1 一、选择题(20分) 1.组成数据的基本单位是( )。 (A)数据项 (B)数据类型 (C)数据元素 (D)数据变量 2.线性表的链接实现有利于( )运算。 (A)插入 (B)读表元 (C)查找 (D)定位 3.串的逻辑结构与( )的逻辑结构不同。 (A)线性表 (B)栈 (C)队列 (D)树 4.二叉树第i(i≥1)层最多有( )个结点 (A)2i, (B)2i (C)2i-1 (D)2i一1 5.设单链表中指针p指向结点A,若要删除A之后的结点(若存在),则修改指针的 操作为( )。 (A)p->next=p->next->next (B)p=p->next (C)p=p->next->next (D)p->next=p 6.设一数列的输入顺序为1,2,3,4,5,6,通过栈操作不可能排成的输出序列为( ) (A)3,2,5,6,4,1 (B)l,5,4,6,2,3 (C)2,4,3,5,1,6 (D)4,5,3,6,2,1 7.设字符中S1=‘ASCDEFG’,S2=‘PQRST’,则运算S=Concat(Sub(S1,2,Length(S2)),Sub(S1,Length(S2),2))后结果为( )。 (A)‘BCQR’ (B)‘BCDEF’ (C)‘BCDE F G’ (D)‘BCDEFEF’ 8.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第1个 元素,其存储地址为1,每个元素占用1个地址空间,则a85的地址为( )。 (A)13 (B)33 (C)18 (D)40 9.如果结点A有3个兄弟,且B为A的双亲,则B的度为( )。 (A)3 (B)4 (C)5 (D)1 10.线索化二叉树中某结点D,没有左孩子的主要条件是( )。 (A)D一>Lchild=NULL (B)D一>1tag=1 (C)D一>Rchild=NULL (D)D一>1tag=0 二、填空题(每空2分,共22分) 1.对于一个以顺序实现的循环队列Q[0…m—1],队首、队尾指针分别为f和r,其判空的条件是____________,判满的条件是______________。 2.循环链表的主要优点是__________________。 3.给定一个整数集合{3,5,6,9,12},画出其对应的一棵Huffman树__________ 4.在双向循环链表中,在指针p所指的结点之后插入指针f所指的结点,其操作为________________ 5.下面为朴素的模式匹配算法,请在算法的下划线处填上正确的子句 int index(s,t) string *s,*t; { i=j=0; while((i<s一>len)&&(j<t一>len)) if (s一>ch[i]==t一>ch[j]){

数据结构模拟试题

数据结构模拟试题 一、从下列有关树的叙述中选出5条正确的叙述(10分) (1)栈与队列都是限制存取点的表,只是它们的存取特征不一样。 (2)高度为h的k叉树至多有kh-1个结点。 (3)由树的中序表示和前序表示可以导出树的后序表示。 (4)将一棵树转换为二叉树表示后,该二叉树的根结点没有右子树。 (5)一棵含有n个结点的完全二叉树,它的高度为élog2n ù+1。 (6)采用二叉树来表示树时,树的先根次序遍历结果与其对应的二叉树的前序遍历结果是一样的。 (7)在二叉树中插入新结点,该二叉树就不再是二叉树了。 (8)一棵Huffman树是带权路径长度最短的扩充二叉树,权值较大的外结点离根较(9)在用k叉链表示的n个结点的k叉树中,空的链指针有n*(k-1)+1个。 (10)用一维数组存储树时,总是以先根遍历的次序存储结点。 二、单项选择题(15分) 1.最佳二叉搜索树是() A 关键码个数最少的二叉搜索树。 B 搜索时平均比较次数最少的二叉搜索树。 C 所有结点的左子树都为空的二叉搜索树。 D 所有结点的右子树都为空的二叉搜索树。2.倒排表的主要优点在于() A 便于进行插入、删除运算。 B 便于进行文件的合并。 C 能大大提高基于忏悔的查找的速度。 D 能大大节省存储空间。 3.设有两个串p和q,求q在p中首次出现的位置的运算称作() A 连接 B 模式匹配 C 求子串 D 求串长 4.设只含根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为( ) A 2k B 2k+1-1 C 2k -1 D 2k-1-1 5.在已知待排序文件已基本有序的前提下,效率最高的排序方法是() A 直接插入排序 B 直接选择排序 C 快速排序 D 归并排序 三、回答下列有关二叉搜索树的问题。(15分) (1)直接在二叉搜索树中查找关键码K与从中序遍历输出的有序序列中用折半搜索法查找关键码K,其数据比较次数是否相同? (2)对于同一组有n个关键码的集合,以不同的输入序列建立二叉搜索树,有多少种不同的二叉搜索树? (3)若输入关键码序列是一个有n个结点的有序序列,以此构造二叉搜索树,它的搜索成功的平均搜索长度是多少? 四、求解下列有关散列的问题。(30分) (1)(5分)设已有13个关键码,将它们散列到一个散列表HT中.采用双散列法解决冲突,要求在表中插入新关键码的平均搜索次数不超过3次。试问该散列表的大小m应设计多大?(双散列解决冲突时的ASLsucc=-loge(1-α)/α,ASLunsucc=1/(1-α) (2)(8分)用除留余数法设计散列函数和寻找下一个空位时所用的再散列函数。

数据结构模拟试题1

数据结构模拟试题(1) 一、填空题:06分,每题02分 1、从一个具有n个结点的单链表中搜索其值等于x的结点时, 在搜索成功的情况下, 需平均比较_______次。 2、根据一组记录(56,42,50,64,48)依次插入结点生成一棵AVL树时,当插入到值为_______的结点时需要进行旋转调整。 3、根据一组记录(56,74,63,64,48)依次插入结点生成一棵AVL树时,当插入到值为63的结点时需要进行________________调整。 单选题:10分,每题02分 4、某算法的时间代价为T(n)=100n+10nlog2n+n2+10,其时间复杂度为()。 A:O(n) B:O(nlog2n) C:O(n2) D:O(1) 5、从一个长度为n的顺序表中顺序搜索一个值为x的元素时,在等概率的情况下,搜索成功时的平均比较次数为()。 A:n B:n/2 C:(n+1)/2 D:(n-1)/2 6、在一个长度为n的顺序表中删除第i个元素(0≤i≤n-1)时,需要从前向后依次前移()个元素。 A:n-I B:n-I+1 C:n-i-1 D:I 7、不带头结点的单链表first为空的判定条件是( )。 A:first == NULL; B:first->link == NULL; C:first->link == first; D:D. first != NULL; 8、树中所有结点的度之和等于所有结点数加( )。 A:0 B:1 C:-1 D:2 9、一棵具有35个结点的完全二叉树的高度为( )。假定空树的高度为 -1。 A:5 B:6 C:7 D:8 10、对于具有e条边的无向图,它的邻接表中有 ( ) 个边结点。 A:e-1 B:e C:2(e-1) D:2e 11、图的深度优先搜索类似于树的()次序遍历。 A:先根B:中根 C:后根D:层次 12、设有向图有n个顶点和e条边,采用邻接表作为其存储表示,在进行拓扑排序时,总的计算时间为()。 A:O(nlog2e) B:O(n+e) C:O(ne) D:O(n2) 13、在下列排序算法中,( )算法使用的附加空间与输入序列的长度及初始排列无关。 A:锦标赛排序B:快速排序 C:基数排序D:归并排序

专升本试题(数据结构)

《数据结构》专升本考试试题 (2015年3月) 一、单项选择题(本大题共20小题,每小题2分,共40分) 1.对于一个算法,当输入非法数据时,也要能作出相应的处理,这种要求称为()。 (A) 正确性 (B) 可行性 (C) 健壮性 (D) 输入性 2.设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为()。 for(i=n-1;i>=0;i--) for(j=0;jnext; p->next= Q.front->next; (B)p=Q.front->next; Q.front->next=p->next; (C)p=Q.rear->next; p->next= Q.rear->next; (D)p=Q->next; Q->next=p->next; 9. Huffman树的带权路径长度WPL等于() (A)除根结点之外的所有结点权值之和(B)所有结点权值之和 (C)各叶子结点的带权路径长度之和(D)根结点的值 10.线索二叉链表是利用()域存储后继结点的地址。 (A)lchild (B)data (C)rchild (D)root 11.研究数据结构就是研究()。(A)数据的逻辑结构(B)数据的存储结构 (C)数据的逻辑结构和存储结构(D)数据的逻辑结构、存储结构及其基本操作 12.算法分析的两个主要方面是()。 (A)空间复杂度和时间复杂度(B)正确性和简单性 (C)可读性和文档性(D)数据复杂性和程序复杂性 13.若一个线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。 (A)顺序表(B)单链表(C)双链表(D)单循环链表 14.在一个长度为n的顺序表中,在第i个元素之前插入一个新元素时,需向后移动()个元素。 (A) n-i (B) n-i+1 (C)n-i-1 (D)i 15.非空的循环单链表head的尾结点p满足()。 (A) p->next==head (B) p->next==NULL (C) p==NULL (D)p==head 16.一个栈的输入序列为:a,b,c,d,e,则栈的不可能输出的序列是()。 (A)a,b,c,d,e (B)d,e,c,b,a (C)d,c,e,a,b (D)e,d,c,b,a 17.设SUBSTR(S,i,k)是求S中从第i个字符开始的连续k个字符组成的子串的操作,则对于S=‘Beijing&Nanjing’,SUBSTR(S,4,5)=()。 (A)‘ijing’ (B)‘jing&’(C)‘ingNa’(D)‘ing&N’ 18.广义表((a),a)的表尾是()。 (A) a (B) (a) (C) () (D)((a)) 19.在一棵具有5层的满二叉树中结点总数为()。 (A)31 (B)32 (C)33 (D)16 20.如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是()。 (A)完全图(B)连通图(C)有回路(D)一棵树 二、填空题(本大题共20个空,每空2分,共40分) 1.逻辑结构决定了算法的,而存储结构决定了算法的。 2.栈和队列都是一种的线性表,栈的插入和删除只能在进行。 3.线性表(a 1 ,a 2 ,…,a n )的顺序存储结构中,设每个单元的长度为L,元素a i的存储地址LOC(a i)为 4.已知一双向链表如下(指针域名为next和prior): 现将p所指的结点插入到x和y结点之间,其操作步骤为:; ;;; 5.n个结点无向完全图的的边数为, n个结点的生成树的边数为。

相关文档