当前位置:文档之家› 数据结构各章复习题

数据结构各章复习题

数据结构各章复习题
数据结构各章复习题

数据结构期末复习题及答案全集

第1 章绪论

一.填空题

1.数据结构被形式地定义为(D, R),其中D是的有限集合,R是D上的有限集合。

2.数据结构包括数据的、数据的和数据的这三个方面的内容。

3.数据结构按逻辑结构可分为两大类,它们分别是和。

4.线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间

存在关系。

5.在线性结构中,第一个结点前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点后续结点,其余每个结点有且只有1个后续结点。

6.在树形结构中,树根结点没有结点,其余每个结点有且只有个前驱结点;叶子结点没有

结点,其余每个结点的后续结点数可以。

7.在图形结构中,每个结点的前驱结点数和后续结点数可以。

8.数据的存储结构可用四种基本的存储方法表示,它们分别是。

9.数据的运算最常用的有5种,它们分别是。

10. 一个算法的效率可分为效率和效率。

11.数据结构是研讨数据的_(1)_和_(2)_,以及它们之间的相互关系,并对与这种结构定义相应的_(3)_,设计出相应的(4)_。

12. 下面程序段中带下划线的语句的执行次数的数量级是( )。

i:=1;

WHILE i

1.应用软件是指_________.

A)所有能够使用的软件 B) 能被各应用单位共同使用的某种软件

C)所有微机上都应使用的基本软件 D) 专门为某一应用目的而编制的软件

2.数据结构中,与所使用的计算机无关的是数据的结构.

A) 存储 B) 物理 C) 逻辑 D) 物理和存储

3.算法分析的目的是____________

A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系

C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性

4.计算机算法必须具备输入、输出和等5个特性。

A) 可行性、可移植性和可扩充性 B) 可行性、确定性和有穷性

C) 确定性、有穷性和稳定性 D) 易读性、稳定性和安全性

5.下面说法错误的是()

(1)算法原地工作的含义是指不需要任何额外的辅助空间

(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界

(4)同一个算法,实现语言的级别越高,执行效率就越低

A.(1) B.(1),(2) C.(1),(4) D.(3)

6.从逻辑上可以把数据结构分为()两大类。

A.动态结构、静态结构 B.顺序结构、链式结构

C.线性结构、非线性结构 D.初等结构、构造型结构

★7.以下与数据的存储结构无关的术语是()。

A.循环队列 B. 链表 C. 哈希表 D. 栈

★8. 下列数据中,()是非线性数据结构。

A.栈 B. 队列 C. 完全二叉树 D. 堆

9.连续存储设计时,存储单元的地址()。

A.一定连续 B.一定不连续

C.不一定连续 D.部分连续,部分不连续三.判断题

1.数据元素是数据的最小单位。( )

2.记录是数据处理的最小单位。 ( )

3.数据的逻辑结构是指数据的各数据项之间的逻辑关系;( )

4.算法的优劣与算法描述语言无关,但与所用计算机有关。( )

5.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。( )

6.算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。( )

7.程序一定是算法。( )

8.数据的物理结构是指数据在计算机内的实际存储形式。( )

9.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( )

10.数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构. ( )

第2 章线性表

一、判断正误

(×)1. 链表的每个结点中都恰好包含一个指针。

(×)2. 链表的物理存储结构具有同链表一样的顺序。

(×)3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。(×)4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

(×)5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。

(×)6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

(×)7. 线性表在物理存储空间中也一定是连续的。

(√)8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。

(×)9. 顺序存储方式只能用于存储线性结构。

(×)10. 线性表的逻辑顺序与存储顺序总是一致的。

二、单项选择题

( C )1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构

( B )2. 一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5 个元素的地址是(A)110 (B)108 (C)100 (D)120

( A )3. 在n 个结点的顺序表中,算法的时间复杂度是O(1)的操作是:

(A)访问第i 个结点(1≤i≤n)和求第i 个结点的直接前驱(2≤i≤n)

(B)在第i 个结点后插入一个新结点(1≤i≤n)

(C)删除第i 个结点(1≤i≤n)

(D)将n 个结点从小到大排序

( B )4. 向一个有127 个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动个元素(A)8 (B)63.5 (C)63 (D)7

( A )5. 链接存储的存储结构所占存储空间:

(A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针

(B)只有一部分,存放结点值

(C)只有一部分,存储表示结点间关系的指针

(D)分两部分,一部分存放结点值,另一部分存放结点所占单元数

( D )6. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址:

(A)必须是连续的(B)部分地址必须是连续的

(C)一定是不连续的(D)连续或不连续都可以

( B )7.线性表L在情况下适用于使用链式结构实现。

(A)需经常修改L中的结点值(B)需不断对L进行删除插入

(C)L中含有大量的结点(D)L中结点结构复杂

( C )8.单链表的存储密度

(A)大于 1; (B)等于 1; (C)小于 1; (D)不能确定

( B )9. 设 a1、a2、a3 为 3 个结点,整数 P0,3,4 代表地址,则如下的链式存储结构称为

P 3 4

P 0 →

(A)循环链表 (B)单链表 (C)双向循环链表 (D)双向链表

( B )10.下面关于线性表的叙述中,错误的是哪一个? A .线性表采用顺序存储,必须占用一片连续的存储

单元。

B .线性表采用顺序存储,便于进行插入和删除操作。

C .线性表采用链接存储,不必占用一片连续的存储单元。

D .线性表采用链接存储,便于插入和删除操作。

( C )11.线性表是具有n 个________的有限序列(n>0)。

A .表元素

B .字符

C .数据元素

D .数据项

( A )12.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用______ 存

储方式最节省时间。

A .顺序表

B .双链表

C .带头结点的双循环链表

D .单循环链表

( D )13.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用 _______

存储方式最节省运算时间。

A .单链表

B .仅有头指针的单循环链表

C .双链表

D .仅有尾指针的单循环链表

( B )14. 静态链表中指针表示的是________.

A . 内存地址

B .数组下标

C .下一元素地址

D .左、右孩子地址( B )

15. 链表不具有的特点是_________.

A .插入、删除不需要移动元素

B .可随机访问任一元素

C .不必事先估计存储空间

D .所需空间与线性长度成正比 ( D )16.完成在双循环链表结点p 之后插入s 的操作是( ).

A . p^.next:=s ; s^.priou:=p; p^.next^.priou:=s ; s^.next:=p^.next;

B. p^.next^.priou:=s; p^.next:=s; s^.priou:=p; s^.next:=p^.next;

C. s^.priou:=p; s^.next:=p^.next; p^.next:=s; p^.next^.priou:=s ;

D. s^.priou:=p; s^.next:=p^.next; p^.next^.priou:=s ; p^.next:=s;

( B )17.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:()。

A.p->next=s;s->next=p->next; B. s->next=p->next;p->next=s;

C.p->next=s;p->next=s->next; D. p->next=s->next;p->next=s;

( B )18.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()

A.head==NULL B.head→next==NULL C.head→next==head D.head!=NULL ( A )19. 在双向链表存储结构中,删除p所指的结点时须修改指针()。

A. (p^.llink)^.rlink:=p^.rlink (p^.rlink)^.llink:=p^.llink;

B. p^.llink:=(p^.llink)^.llink (p^.llink)^.rlink:=p;

C. (p^.rlink)^.llink:=p p^.rlink:=(p^.rlink)^.rlink

D. p^.rlink:=(p^.llink)^.llink p^.llink:=(p^.rlink)^.rlink;

三、简答题

1.线性表有两种存储结构:一是顺序表,二是链表。试问:

(1)如果有 n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。

在此情况下,应选用哪种存储结构?为什么?

答:在此情况下,应该使用链式存储结构.因为,链式表可以很好地处理插入删除操作,而使用顺序存储结构则可能发生溢出,又有可能因为预分配的空间过大造成浪费.

(2)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?为什么?

答:应选用顺序存储结构,因为,单链表查找元素的时间复杂度为O(1).

2 . 在单链表中设置头结点的作用是什么?

答:将空表与非空表,头尾结点与其它结点的操作统一.

四、线性表具有两种存储方式,即顺序方式和链接方式。现有一个具有五个元素的线性表L={23,17,47,05,31},若它以链接方式存储在下列100~119 号地址空间中,每个结点由数据(占2 个字节)和指针(占2 个字节)组成,如下所示:

^

100 120

其中指针X,Y,Z 的值分别为多少?该线性表的首结点起始地址为多少?末结点的起始地址为多少?

答: X 的值为116 , Y 的值为NULL , Z 的值为 100 .首结点起始地址为108,末结点的起始地址为112 .

五、编程题

1. 写出顺序创建单链表的程序,即按从a1 到an 顺序创建。

此文件名为 MyLinkList.cpp

#include s->data=a[i]; using namespace std;

s->next=first->next;

template first->next=s; struct Node }

{ }

T data; template

Node *next; LinkList :: ~LinkList()

}; {

template Node *q; class LinkList Node *p;

{ p=first; private: while(p) Node *first; { public : q=p;

LinkList(T a[],int n); p=p->next;

~LinkList(); delete q;

void PrintList(); }

}; }

template void main()

LinkList::LinkList(T a[],int n) {

{ int r[]={1,2,3,4,5}; first=new Node; LinkLista(r,5);

f irst->next=NULL; a.PrintList ();

for(int i=0;i

{

Node *s; }

s=new Node;

2. 已知一个带头结点的单链表L,请编程求该单链表中数据元素的个数。

{

由于已知一个单链表 L,所以把上一道题的代码引

i++; 过来

p=p->next;

#include

}

#include “MyLinkList.cpp” r eturn i;

using namespace std;

} template void main()

int LinkList::getLongth()

{ {

LinkList L;

Node *p;

L.getLongth();

int i=0;

s ystem("pause");

p=first->next;

} while(p)

3. 设有一带头结点的单链表,编程将链表颠倒过来,即(a1...a n)逆置为(a n...a1),要求不用另外的数组或结点完成. #include using namespace std;

template q=p; struct Node p=p->next;

{ delete q;

T data; }

Node *next; }

}; template

template int LinkList::getLongth()

class LinkList {

{ Node *p; private: int i=0;

Node *first; p=first->next;

public : while(p)

LinkList() {first=new {

Node;first->next=NULL;} i++;

LinkList(int n); p=p->next;

~LinkList(); }

Node* getFirst() return i;

{ }

return this->first; template

} void LinkList::TurnLinkList() void PrintList(); {

int getLongth(); Node *p,*q,*r; void TurnLinkList(); p=first->next ;

}; q=p->next ;

template while(q!=NULL) LinkList::LinkList(int n) {

{ r=q->next ; first=new Node; q->next =p;

f irst->next=NULL; p=q; for(int i=0;i

{ }

Node *s; first->next->next =NULL;

s=new Node; first->next =p;

} cout<<"请输入第"<

template

"; void LinkList::PrintList () cin>>s->data; {

s->next=first->next; Node *p; first->next=s; p=first->next;

} while(p != NULL)

} {

template cout<data<<" "; LinkList :: ~LinkList() p=p->next ;

{ }

Node *q; cout<

Node *p; }

p=first; void main()

while(p) { { int n;

A.PrintList(); cout<<"请输入单链表需要输入的数据元素的cout<<"颠倒之后的数据元素依次为: "<<" ";

个数 : ";

A.TurnLinkList ();

cin>>n; A.PrintList();

LinkList A(n); system("pause");

}

cout<<"A的数据元素为 : ";

4.请写一个算法将顺序存储结构的线性表(a1...a n)逆置为(a n...a1),要求使用最少的附加空间。

Status ListReplace_Sq(SqList &L,int n)

{

If(n<1||n>L.length+1)

return ERROR;

if(L.length>=L.listsize)

{

Newbase=(ElemType

*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); I f(!newbase)

exit(OVERFLOW);

L.elem=newbase;

L.listsize+=LISTINCREMENT;

}

for(i=0;i

{

temp=a[n-i-1]; a[n-i-

1]=a[i]; a[i]=temp;

}

return OK;

}

第3 章栈和队列

一、填空题

1.向量、栈和队列都是线性结构,可以在向量的任意位置位置插入和删除元素;对于栈只能在表尾插

入和删除元素;对于队列只能在一端插入和另一端删除元素。

2.栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。不允许插入和删除运算的一端称为栈底。

3.队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

4.在具有n 个单元的循环队列中,队满时共有n - 1个元素。

5.带表头结点的空循环双向链表的长度等于0。

二、判断正误

(×)1. 在表结构中最常用的是线性表,栈和队列不太常用。

(√)2. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。

(√)3. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。

(√)4. 栈和链表是两种不同的数据结构。

(×)5. 栈和队列是一种非线性数据结构。

(√)6. 栈和队列的存储方式既可是顺序方式,也可是链接方式。

(√)7. 两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。

(×)8. 队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。

(×)9. 一个栈的输入序列是12345,则栈的输出序列不可能是12345。

三、单项选择题

(B)1. 栈中元素的进出原则是

A.先进先出B.后进先出C.栈空则进D.栈满则出

(C)2. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi 为

A.i B.n=i C.n-i+1 D.不确定

(B)3. 判定一个栈ST(最多元素为m0)为空的条件是

A.ST->top<>0 B.ST->top=0

C.ST->top<>m0 D.ST->top=m0

(D)4. 判定一个队列QU(最多元素为m0)为满队列的条件是

A.QU->rear - QU->front = = m0

B.QU->rear - QU->front -1= = m0

C.QU->front = = QU->rear

D.QU->front = = QU->rear+1

(D)5.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为

(A)r-f; (B)(n+f-r)% n;

(C)n+r-f; (D)(n+r-f)% n

6.设有4 个数据元素a1、a2、a3 和a4,对他们分别进行栈操作或队操作。在进栈或进队操作时,按a1、a2、

a3、a4 次序每次进入一个元素。假设栈或队的初始状态都是空。

现要进行的栈操作是进栈两次,出栈一次,再进栈两次,出栈一次;这时,第一次出栈得到的元素是 A ,

第二次出栈得到的元素是 B ;类似地,考虑对这四个数据元素进行的队操作是进队两次,出队一次,再进队两次,出队一次;这时,第一次出队得到的元素是 C ,第二次出队得到的元素是 D 。经操作后,最后在栈中或队中的元素还有 E 个。

~D:①a1 ②a2 ③ a3 ④a4 E:①1 ②2 ③ 3 ④ 0 答:A、B、C、D、E分别为

②、④、①、②、②

7.栈是一种线性表,它的特点是 A 。设用一维数组A*1,…,n+来表示一个栈,A[n]为栈底,用整型变量T 指示当前栈顶位置,A[T]为栈顶元素。往栈中推入(PUSH)一个新元素时,变量T 的值 B ;从栈中弹出(POP)一个元素时,变量T 的值 C 。设栈空时,有输入序列a,b,c,经过PUSH,POP,PUSH,PUSH,POP 操作后,从栈中弹出的元素的序列是 D ,变量T 的值是 E 。

A:①先进先出②后进先出③进优于出④出优于进⑤随机进出

B,C:①加1 ②减1 ③不变④清0 ⑤加2 ⑥减2

D:① a,b ②b,c ③c,a ④b,a ⑤ c,b ⑥ a,c E:① n+1 ②n+2 ③ n

④ n-1 ⑤ n-2

答:A、B、C、D、E分别为②、①、②、⑥、①

8.在做进栈运算时,应先判别栈是否 A ;在做退栈运算时,应先判别栈是否 B 。当栈中元素为n 个,做进栈运算时发生上溢,则说明该栈的最大容量为 C 。

为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 D 分别设在这片内存空间的两端,这样,只有当 E 时,才产生上溢。

A,B:①空②满③上溢④下溢 C:①n-1 ② n

③ n+1 ④ n/2

D:①长度②深度③栈顶④栈底

E:①两个栈的栈顶同时到达栈空间的中心点②其中一个栈的栈顶到达栈空间的中心点

③两个栈的栈顶在达栈空间的某一位置相遇④两个栈均不空,且一个栈的栈顶到达另一个栈的栈底

答:A、B、C、D、E分别为②、①、②、④、③

四、简答求解题

1.说明线性表、栈与队的异同点。

答: 相同点: 逻辑结构相同,都是线性的.都可以用顺序存储结构或链式存储结构.栈和队列是两种特殊的线性表,即受限的线性表(只是对插入和删除运算加以限制).

不同点: 1.运算规则不同,线性表是随机存取的,而栈是只允许在一端进行插入和删除运算的,因而是后进先出表LIFO;队列是只允许在一端进行插入,另一端进行删除运算,因而是先进先

出表FIFO.

2.用途不同,线性表比较通用,堆栈用亍函数调用,递归和筒化设计等.队列用亍离散事件模拟,

多道作业处理和筒化设计等.

2.设循环队列的容量为40(序号从0 到39),现经过一系列的入队和出队运算后,有

① front=11,rear=19; ② front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个?答:

第一种情况下,代入公式(40+19-11)%40=8 , 所以有元素8 个. 第二种情况下,代入公式

(40+11-19)%40=32 , 所以有元素32 个.

五、算法设计

1.假设一个数组squ[m]存放循环队列的元素。若要使这m 个分量都得到利用,则需另一个标志tag,以tag 为0 或

1 来区分尾指针和头指针值相同时队列的状态是“空”还是“满”。试编写相应的入队和出队的算法。

#define MAXQSIZE 100 typedef

struct

{

QElemType *base;

int front; int

rear;

}SqQueue;

Status InitQueue(SqQueue &Q,int maxsize)

{

Q.base=(QElemType*)malloc(maxsize*sizeof(QElemT

ype)); if(!Q.base) exit(OVERFLOW); Q.front=Q.rear=0;

tag=0; return OK;

}

Status EntryQueue(Queue &Q,QElemType e)

{

if(Q.rear==Q.front||tag==1)

return ERROR;

Q.base[Q.rear]=e;

Q.rear=(Q.rear+1)%MAXSIZE;

return OK;

}

Status DeleteQueue(Queue &Q,QElemType &Q)

{

if(Q.front==Q.rear||tag==0)

return ERROR;

e.Q.base[Q.front];

Q.front=(Q.front+1)%MAXSIZE;

return TRUE;

}

第4~5 章串、数组和广义表

一、填空题

1.称为空串;称为空白串。

2.设S=“A;/document/Mary.doc”,则strlen(s)= , “/”的字符定位的位置为。

3.子串的定位运算称为串的模式匹配;称为目标串,称为模式。

4.若n 为主串长,m 为子串长,则串的古典匹配算法最坏的情况下需要比较字符的总次

数为。

5.假设有二维数组A6×8,每个元素用相邻的6 个字节存储,存储器按字节编址。已知A

的起始存储位置(基地址)为1000,则数组A 的体积(存储量)为;末尾元素

A57 的第一个字节地址为;若按行存储时,元素A14 的第一个字节地址为;

若按列存储时,元素A47 的第一个字节地址为。

6.设数组a[1…60, 1…70]的基地址为2048,每个元素占2 个存储单元,若以列序为主序顺

序存储,则元素a[32,58] 的存储地址为。

7.三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分

别表示该元素

的、和。

8.求下列广义表操作的结果:

(1)GetHead【((a,b),(c,d))】=== ;

(2)GetHead【GetTail【((a,b),(c,d))】】=== ;

(3)GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== ;

(4)GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== ; 二、单选题

()1. 串是一种特殊的线性表,其特殊性体现在:

A.可以顺序存储B.数据元素是一个字符

C.可以链式存储D.数据元素可以是多个字符

()2. 设有两个串p 和q,求q 在p 中首次出现的位置的运算称作:

A.连接B.模式匹配C.求子串D.求串长

()3. 设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x 和y 串的连接串,subs(s, i, j)返回串s 的从序号i

开始的j 个字符组成的子串,len(s)返回串s 的长度,则con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结

果串是:

A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF

()4. 假设有60 行70 列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2 个存储单元,那么第32 行第58 列的元素a[32,58]的存储地址为。(无第0 行第0 列元素)

A.16902 B.16904 C.14454 D.答案A, B, C 均不对

( ) 5. 设矩阵A 是一个对称矩阵,为了节省存储,将其下三角部分(如a

1,1

a2,1 a右图所示)按行序存

放在一维数组B[ 1, n(n-1)/2 ]中,对下三角部A2,2分中任一元素a i,j(i≤j), 在一维数组B 中下标k 的值是:

a n,1 a n,2 a n,n

A.i(i-1)/2+j-1 B.i(i-1)/2+j

C.i(i+1)/2+j-1 D.i(i+1)/2+j

6.从供选择的答案中,选出应填入下面叙述?内的最确切的解答,把相应编号写在答卷的对应栏内。

有一个二维数组A,行下标的范围是0 到8,列下标的范围是1 到5,每个数组元素用相邻的4 个字节存储。存储器按字节编址。假设存储数组元素A[0,1]的第一个字节的地址是0。

存储数组A 的最后一个元素的第一个字节的地址是 A 。若按行存储,则A[3,5]和A[5,3]的第一个字节的地址分别是 B 和 C 。若按列存储,则A[7,1]和A[2,4]的第一个字节的地址分别是 D 和 E 。供选择的答案

A~E:①28 ② 44 ③ 76 ④ 92 ⑤ 108 ⑥ 116 ⑦ 132 ⑧ 176 ⑨ 184 ⑩ 188 答案:A= B= C=

D= E=

7.从供选择的答案中,选出应填入下面叙述?内的最确切的解答,把相应编号写在答卷的对应栏内。

有一个二维数组A,行下标的范围是1 到6,列下标的范围是0 到7,每个数组元素用相邻的6 个字节存储,

存储器按字节编址。那么,这个数组的体积是 A 个字节。假设存储数组元素A[1,0]的第一个字节的地址是0,则存储数组A 的最后一个元素的第一个字节的地址是 B 。若按行存储,则A[2,4]的第一个字节的地址是 C 。

若按列存储,则A[5,7]的第一个字节的地址是 D 。

供选择的答案

A~D:①12 ②66 ③72 ④96 ⑤114 ⑥120 ⑦156 ⑧234 ⑨276 ⑩282 (11)283 (12)288 答案:A= B=

C= D= E= 三、计算题

1. 设 s=’I AM A STUDENT’, t=’GOOD’, q=’WORKER’, 求 Replace (s,’STUDENT’, q) 和 Concat (SubString (s,6,2), Concat (t,

SubString (s,7,8)))。

2. 用三元组表表示下列稀疏矩阵:

3. 下列各三元组表分别表示一个稀疏矩阵,试写出它们的稀疏矩阵。

6 4 6

1 2 2 141515

2 1 12

(1)

3 1 3 (2)322489

4 4 4

356

5 3

6 6 116

4 37

000002

00009

(2)0000000500

(1)

00000

00003

数据结构第一章试题

Chap1 一、选择题 1.算法的计算量的大小称为计算的()。 A.效率 B.复杂性 C.现实性 D.难度 2.计算机算法指的是(1),它必须具备(2)这三个特性。 (1)A.计算方法 B.排序方法 C.解决问题的步骤序列 D.调度方法 (2)A.可执行性、可移植性、可扩充性 B.可执行性、确定性、有穷性 C.确定性、有穷性、稳定性 D.易读性、稳定性、安全性 3.下面关于算法说法错误的是()。 A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C.算法的可行性是指指令不能有二义性 D.以上几个都是错误的 4.从逻辑上可以把数据结构分为()两大类。 A.动态结构、静态结构B.顺序结构、链式结构 C.线性结构、非线性结构D.初等结构、构造型结构 5.以下数据结构中,哪一个是线性结构()? A.广义表 B.二叉树 C.稀疏矩阵 D.串 6.在下面的程序段中,对x的赋值语句的频度为() FOR i:=1TO n DO FOR j:=1TO n DO x:=x+1; n) A.O(2n)B.O(n)C.O(n2)D.O(log 2 7.程序段FOR i:=n-1DOWNTO1DO FOR j:=1TO i DO IF A[j]>A[j+1] THEN A[j]与A[j+1]对换; 其中n为正整数,则最后一行的语句频度在最坏情况下是()。 A.O(n) B.O(nlogn) C.O(n3) D.O(n2) 8.以下哪个数据结构不是多型数据类型() A.栈B.广义表C.有向图D.字符串 9.以下数据结构中,()是非线性数据结构 A.树B.字符串C.队D.栈 二、判断题 1.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。() 2.算法可以用不同的语言描述,如果用C语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。() 3.程序一定是算法。() 4.数据的物理结构是指数据在计算机内的实际存储形式。() 5.数据结构的抽象操作的定义与具体实现有关。() 6.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。()

数据结构第二章试题

第2章线性表 一、选择题 1. 链表不具备的特点是()。 A.可随机访问任意结点 B. 插入删除不需要移动元素 C. 不必事先估计存储空间 D. 所需空间与其长度成正比 2. 不带头结点的单链表head为空的判定条件是()。 ==NULL B. head->next==NULL >next==head !=NULL 3.带头结点的单链表head为空的判定条件是()。 ==NULL B. head->next==NULL >next==head !=NULL 4.带头结点的双循环链表L为空表的条件是()。 A.L==NULL B.L->next->==NULL C.L->prior==NULL >next==L 5.非空的循环链表head的尾结点(由P所指向)满足()。 A.p->next==NULL B.p==NULL C.p->next==head ==head 6.在循环双链表的p所指结点之前插入s所指结点的操作是()。 A.p->prior=s;s->next=p;p->prior->next=s;s->prior=p->prior; B.p->prior=s;p->prior->next=s;s->next=p;s->prior=p->prior; C.s->next=p;s->prior=p->prior;p->prior=s;p->right->next=s; D. s->next=p;s->prior=p->prior;p->prior->next=s;p->prior=s; 7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间。 A.单链表 B.给出表头指针的单循环链表 C.双链表 D. 带头结点的双循环链表 8.某线性表最常用的操作是在最后一个结点之后插入一个节点或删除第一个结点,故采用()存储方式最节省运算时间。 A.单链表 B.仅有头结点的单循环链表 C.双链表 D. 仅有尾指针的单循环链表 9.需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是()。 A.单链表 B.静态链表 C.线性链表 D. 顺序存储结构 10.如果最常用的操作是取第i个结点及前驱,则采用()存储方式最节省时间。 A.单链表 B.双链表 C.单循环链表 D.顺序表 11.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是()。 A.O(1) B.O(n) C.O(n*n) D. O(nlog2n) 12.在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行()操作与链表的长度有关。A.删除单链表中的第一个元素 B.删除单链表中的最后一个元素 C. 在单链表第一个元素前插入一个新元素 D.在单链表最后一个元素后插入一个新元素 13.设线性表有n个元素,以下算法中,()在顺序表上实现比在链表上实现效率更高。A.输出第i(0<=i<=n-1)个元素值 B.交换第0个元素与第1个元素的值 C. 顺序输出这n个元素的值 D.输出与给定值x相等的元素在线性表中的序号 14.设线性表有2n个元素,算法(),在单链表上实现比在顺序表上实现效率更高。 A.删除所有值为x的元素 B.在最后一个元素的后面插入一个新元素 C. 顺序输出前k个元素 D.交换第i个元素和第2n-i-1个元素的值(i=0,1,…,n-1)

数据结构常见笔试题

1.栈和队列的共同特点是(只允许在端点处插入和删除元素) 2.栈通常采用的两种存储结构是(线性存储结构和链表存储结构) 3.链表不具有的特点是(B) A.不必事先估计存储空间 B.可随机访问任一元素 C.插入删除不需要移动元素 D.所需空间与线性表长度成正比 4.用链表表示线性表的优点是(便于插入和删除操作) 5.在单链表中,增加头结点的目的是(方便运算的实现) 6.循环链表的主要优点是(从表中任一结点出发都能访问到整个链表) 7.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D) A.必须是连续的 B.部分地址必须是连续的 C.一定是不连续的 D.连续不连续都可以 8.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构) 9.具有3个结点的二叉树有(5种形态) 10.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的 结点数为(13)(n 0 = n 2 +1) 11.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba) 12.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca) 13.数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。

1.在计算机中,算法是指(解题方案的准确而完整的描述) 2.算法一般都可以用哪几种控制结构组合而成(顺序、选择、循环) 3.算法的时间复杂度是指(算法执行过程中所需要的基本运算次数) 4.算法的空间复杂度是指(执行过程中所需要的存储空间) 5.算法分析的目的是(分析算法的效率以求改进) 6.下列叙述正确的是(C) A.算法的执行效率与数据的存储结构无关 B.算法的空间复杂度是指算法程序中指令(或语句)的条数 C.算法的有穷性是指算法必须能在执行有限个步骤之后终止 D.算法的时间复杂度是指执行算法程序所需要的时间 7.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及(数据的存储结构) 8.数据结构中,与所使用的计算机无关的是数据的(C) A.存储结构 B.物理结构 C.逻辑结构 D.物理和存储结构 9.下列叙述中,错误的是(B) A.数据的存储结构与数据处理的效率密切相关 B.数据的存储结构与数据处理的效率无关 C.数据的存储结构在计算机中所占的空间不一定是连续的 D.一种数据的逻辑结构可以有多种存储结构 10.数据的存储结构是指(数据的逻辑结构在计算机中的表示) 11.数据的逻辑结构是指(反映数据元素之间逻辑关系的数据结构) 12.根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为(线性结构和非线性结构) 13.下列数据结构具有记忆功能的是(C) A.队列 B.循环队列 C.栈 D.顺序表 14.递归算法一般需要利用(栈)实现。 15.由两个栈共享一个存储空间的好处是(节省存储空间,降低上溢发生的机率)

2017年数据结构期末考试题及答案A

2017年数据结构期末考试题及答案 一、选择题(共计50分,每题2分,共25题) 1 ?在数据结构中,从逻辑上可以把数据结构分为 C 。 A. 动态结构和静态结构B?紧凑结构和非紧凑结构 C.线性结构和非线性结构 D .内部结构和外部结构 2?数据结构在计算机内存中的表示是指 A ° A. 数据的存储结构 B.数据结构 C.数据的逻辑结构 D .数据元 素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A. 逻辑B?存储 C.逻辑和存储 D.物理 4 .在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C ° A.数据的处理方法B?数据元素的类型 C.数据元素之间的关系 D.数据的存储方法 5. 在决定选取何种存储结构时,一般不考虑 A ° A.各结点的值如何B?结点个数的多少 C?对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。 6. 以下说法正确的是D ° A. 数据项是数据的基本单位 B. 数据元素是数据的最小单位 C. 数据结构是带结构的数据项的集合 D. —些表面上很不相同的数据可以有相同的逻辑结构 7. 在以下的叙述中,正确的是B ° A. 线性表的顺序存储结构优于链表存储结构 B. 二维数组是其数据元素为线性表的线性表 C?栈的操作方式是先进先出 D.队列的操作方式是先进后出

8. 通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着 A. 数据元素具有同一特点 B. 不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致 C. 每个数据元素都一样 D. 数据元素所包含的数据项的个数要相等 9 ?链表不具备的特点是 A 。 A.可随机访问任一结点 B.插入删除不需要移动元素 C?不必事先估计存储空间 D.所需空间与其长度成正比 10. 若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一 个结点,则采用 D 存储方式最节省运算时间。 A.单链表B ?给出表头指针的单循环链表 C.双链表D ?带头结点 的双循环链表 11. 需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 B 。 A.单链表B .静态链表 C.线性链表 D .顺序存储结构 12 .非空的循环单链表head的尾结点(由p所指向)满足C 。 A. p—>next 一NULL B. p — NULL C. p—>next == head D. p = = head 13 .在循环双链表的p所指的结点之前插入s所指结点的操作是 D 。 A .p—> prior-> prior=s B .p—> prior-> n ext=s C.s —> prior—> n ext = s D.s —> prior—> prior = s 14 .栈和队列的共同点是C 。 A.都是先进后出 B .都是先进先出 C.只允许在端点处插入和删除元素 D .没有共同点

数据结构试题及答案

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

A.64 B.63 C.31 D.32 7.将含100个结点的完全二叉树从根这一层开始,每层从左至右依次对结点编号,根结点的编号为1。编号为47的结点X的双亲的编号为( C ) A.24 B.25 C.23 D.2无法确定 8.设有一个无向图G=(V,E)和G'=(V',E'),如果G'为G的生成树,则下面不正确的说法是( D ) A.G'为G的子图 B.G'为G的一个无环子图 C.G'为G的极小连通子图且V'=V D.G'为G的连通分量 1 9.用线性探测法查找闭散列上,可能要探测多个散列地址,这些位置上的键值( D ) A.一定都是同义词 B.一定都不是同义词 C.都相同 D.不一定都是同义词 10.二分查找要求被查找的表是( C ) A.键值有序的链接表 B.链接表但键值不一定有序表 C.键值有序的顺序表 D.顺序表但键值不一定有序表 11.当初始序列已经按键值有序,用直接插入法对其进行排序,需要比较的次数为( B ) 2 A. n B. n-1 C. logn D. nlogn 22 12.堆是一个键值序列{K1,K2,...,Ki,...,Kn},对i=1,2,...,n/2 ,满足 ( A ) ? ? A. Ki<=K2i且Ki<=K2i+1(2i+1<=n) B.Ki

数据结构第二章线性表测试题

第二章线性表 1、描述一下三个概念的区别:头指针,头结点,首元结点。并给予图示。 2、对于有头结点的单链表,分别写出定位成功时,实现下列定位语句序列。(1)定位到第i 个结点a i ; (2)定位到第i 个结点的前驱a i-1; (3)定位到尾结点; (4)定位到尾结点的前驱。 3、已知L 是有表头结点的单链表,且P 结点既不是首元结点,也不是尾结点,试写出实现下列功能的语句序列。 (1)在P 结点后插入S 结点;(2)在P 结点前插入S 结点;(3)在表首插入S 结点;(4)在表尾插入S 结点 . p=head; p=head; j=0; while ( p && jnext; j++;} p=head; j=0; while ( p && jnext; j++;} p=head; while ( p ->next ) p=p->next; while ( p->next->next ) p=p->next; (1)s->next=p->next; p->next=s; (2)q =L ; whil e ( q ->next !=p ) q =q ->next;s->next=p 或 q ->next ; q ->next=s; (3 ) s->next=L ->next; L ->next=s; (4)q =L ; whil e ( q ->next !=NULL) q =q ->next;s->next= q ->next ; q ->next=s;

4、设计算法:在顺序表中删除值为e 的元素,删除成功,返回1;否则,返回0。 5、设计一个算法,将一个带头节点的数据域依次为a 1,a 2,…,a n (n ≥3)的单链表的所有节点逆置,即第一个节点的数据域变为a n ,…,最后一个节点的数据域为a 1。(注意:先用自然语言描述算法基本思想,然后用类C++语言描述) int Sqlist::DeleteElem( T e ) { for (i=1; i<=len g t h ; i ++) // 按值顺序查找 * i 可从0开始 if (elem[i-1]= =e) // 找到,进行删除操作 { for ( j=i; jnext; 4 LinkList* pri = NULL; //之前的节点 5 while(p){ 6 LinkList* q = new LinkList; 7 q->data = p->data; //把当前节点记录下来 8 q->next = pri; 9 pri = q; 10 head->next = q; 11 LinkList* t = p; //当前节点没用了删除掉 12 p=p->next; 13 delete(t); 14 } 15 }

数据结构期末考试题及答案

数据结构期末考试题及答案 、选择题 1.在数据结构中, 从逻辑上能够把数据结构分为 A. 动态结构和静态结构 B .紧凑结构和非紧凑结构 C.线性结构和非线性结构 D .内部结构和外部结构 2. 数据结构在计算机内存中的表示是指 A.数据的存储结构 B.数据结构 C.数据的逻辑结构 D.数据元素之间的关系 3. 在数据结构中, 与所使用的计算机无关的是数据的 结构。 A.逻辑 B.存储 C.逻辑和存储 D.物理 4. 在存储数据时, 一般不但要存储各数据元素的值, 而且还 要存储C A. 数据的处理方法 B. 数据元素的类型 C.数据元素之间的关系 D.数据的存储方法 5.在决定选取何种存储结构时般不考虑A 。 A. 各结点的值如何 B. 结点个数的多少 C.对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 A. 数据项是数据的基本单位

B. 数据元素是数据的最小单位 C. 数据结构是带结构的数据项的集合 D. —些表面上很不相同的数据能够有相同的逻辑结构7.算法分析的目的是C , 算法分析的两个主要方面是A 。 (1) A.找出数据结构的合理性 和输出的关系 C. 分析算法的效率以求改进 档性 ( 2) A .空间复杂度和时间复杂度 C. 可读性和文档性 性 8. 下面程序段的时间复杂度是 s = 0; for( I = 0; i v n; i + + ) for( j = 0; j v n; j ++ ) s +二B[i][j]; sum = s ; 9. 下面程序段的时间复杂度是 for( i = 0; i v n; i + + ) for( j = 0; j v m; j ++ ) B .研究算法中的输入 C .分析算法的易读性和文 B .正确性和简明性D .数据复杂性和程序复杂 O( n2) 。 O( n*m) 。

数据结构试题答案

第一章概论 一、选择题 1、研究数据结构就是研究(D )。 A. 数据的逻辑结构 B. 数据的存储结构 C. 数据的逻辑结构和存储结构 D. 数据的逻辑结构、存储结构及其基本操作(研究非数值计算的程序设计问题中,计算机操作对象以及他们之间的关系和操作) 2、算法分析的两个主要方面是( A )。 A. 空间复杂度和时间复杂度 B. 正确性和简单性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 3、具有线性结构的数据结构是( D )。(线性结构就是:在非空有限集合中,存在为一个被称为第一个的数据元素和最后一个元素,有除了第一个元素,集合中每一个元素均只有一个前驱,除了最后一个元素有唯一后继)(链表、栈、队列、数组、串) A. 图 B. 树 C. 广义表(线性表的推广) D. 栈 4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B )等5个特性。 A. 可执行性、可移植性和可扩充性 B. 可执行性、有穷性和确定性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和确定性 5、下面程序段的时间复杂度是( C )。 for(i=0;i

6、算法是(D )。为了解决某一问题而规定的一个有限长的操作序列 A. 计算机程序 B. 解决问题的计算方法 C. 排序算法 D. 解决问题的有限运算序列 7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示(C )。 A. O(n) B. O(nlog2n) C. O(n2) D. O(log2n) 8、下面程序段的时间复杂度为( C )。 i=1; while(i<=n) i=i*3; A. O(n) B. O(3n) C. O(log3n) D. O(n3) 9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的(B )和运算等的学科。(关系和操作) A. 结构 B. 关系 C. 运算 D. 算法 10、下面程序段的时间复杂度是( A )。 i=s=0; while(s

经典数据结构面试题(含答案)

.栈通常采用的两种存储结构是______________________ .用链表表示线性表的优点是_______________________ 8.在单链表中,增加头结点的目的是___________________ 9.循环链表的主要优点是________________________- 12.线性表的顺序存储结构和线性表的链式存储结构分别是__________________________ 13.树是结点的集合,它的根结点数目是_____________________ 14.在深度为5的满二叉树中,叶子结点的个数为_______________ 15.具有3个结点的二叉树有(_____________________ 16.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为____________________ 17.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是____________________________ 18.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为______________________ 19.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是_______________________ 20.数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。 在计算机中,算法是指_______________________ 算法一般都可以用哪几种控制结构组合而成_____________________ .算法的时间复杂度是指______________________ 5. 算法的空间复杂度是指__________________________ 6. 算法分析的目的是__________________________

数据结构期末试题1及答案

试卷 A 1、顺序表中所有结点的类型必须相同。() 2、链接表中所有灵活利用存储空间,所以链表都是紧凑结构。 ( ) 3、用Ch1,Ch2表示两个字符,若Ord(Ch1)<Ord(Ch2),则称Ch1<Ch2 4、Shell排序方法是不稳定的。() 5、只允许最下面的二层结点的度数小于2的二叉树是完全二叉树( ) 6、若检索所有结点的概率相等,则内部路径长度大的二叉树其检索效 率高。() 7、n个结点的有向图,若它有n(n-1)条边,则它一定是强连通的。 8、广义表中,若限制表中成分的共享和递归所得到的结构是树结构) 9、多维数组元素之间的关系是线性的。() 10、任何无环的有向图,其结点都可以排在一个拓扑序列里。 ( ) 11、数据的逻辑结构可形式地用一个二元组B=(K,R)来表示,其中K 是__________,R是_____________。 12、广义表(a,(a,b),d,e,((i,j),k))的长度是。 13、一个串,除自身之外的所有子串都是该串的。 14、树形选择排序总的时间开销为。 15、按先根次序法周游树林正好等同于按周游对应的二叉 树。 16、外部路径长度E定义为从扩充二叉树的到每个 的路径长度之和。 17、在图结构中,如果一个从V p到V q的路径上除V p和V q可以相同外, 其它结点都不相同,则称此路径为一称为回路。 18、栈是一种表。 19.带权的又称为网络。 20、n×n的三对角矩阵按“行优先顺序”存储其三对角元素,已和a11 的存储地址为LOC(a11),矩阵的每个元素占一个存储单元,则a ij(i=1, j=1,2或1<i<n,j=i-1,i,i+1或i=n,j=n-1,n)的存储地 址为LOC(a ij)=。

数据结构第一章考试题库(含答案)

第1章绪论 一、选择题 1. 算法的计算量的大小称为计算的()。【北京邮电大学2000 二、3 (20/8分)】 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于()【中科院计算所1998 二、1 (2分)】 A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是(1),它必须具备(2)这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 【南京理工大学1999 一、1(2分)【武汉交通科技大学1996 一、1(4分)】4.一个算法应该是()。【中山大学1998 二、1(2分)】 A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C. 5. 下面关于算法说法错误的是()【南京理工大学2000 一、1(1.5分)】 A.算法最终必须由计算机程序实现 B. 为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是()【南京理工大学2000 一、2 (1.5分)】 (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为()两大类。【武汉交通科技大学1996 一、4(2分)】 A.动态结构、静态结构B.顺序结构、链式结构 C.线性结构、非线性结构D.初等结构、构造型结构 8.以下与数据的存储结构无关的术语是()。【北方交通大学2000 二、1(2分)】 A.循环队列 B. 链表 C. 哈希表 D. 栈 9.以下数据结构中,哪一个是线性结构()?【北方交通大学2001 一、1(2分)】 A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串

数据结构试题及答案

一、单选题(每题2 分,共20分) 1. 1.对一个算法的评价,不包括如下(B )方面的内容。 A.健壮性和可读性B.并行性C.正确性D.时空复杂度 2. 2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结 点,则执行( A )。 A. p->next=HL->next; HL->next=p; B. p->next=HL; HL=p; C. p->next=HL; p=HL; D. HL=p; p->next=HL; 3. 3.对线性表,在下列哪种情况下应当采用链表表示?(B ) A.经常需要随机地存取元素 B.经常需要进行插入和删除操作 C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变 4. 4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是 ( C ) A. 2 3 1 B. 3 2 1 C. 3 1 2 D. 1 2 3 5. 5.AOV网是一种( D )。 A.有向图B.无向图C.无向无环图D.有向无环图 6. 6.采用开放定址法处理散列表的冲突时,其平均查找长度(B)。 A.低于链接法处理冲突 B. 高于链接法处理冲突 C.与链接法处理冲突相同D.高于二分查找 7.7.若需要利用形参直接访问实参时,应将形参变量说明为(D )参数。 A.值B.函数C.指针D.引用 8.8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具 有相同的(A)。 A.行号B.列号C.元素值D.非零元素个数 9.9.快速排序在最坏情况下的时间复杂度为(D )。 A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2) 10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( C )。 A. O(n) B. O(1) C. O(log2n) D. O(n2) 二、二、运算题(每题 6 分,共24分) 1. 1.数据结构是指数据及其相互之间的______________。当结点之间存在M 对N(M:N)的联系时,称这种结构为_____________________。 2. 2.队列的插入操作是在队列的___尾______进行,删除操作是在队列的 ____首______进行。 3. 3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则 表示栈满的条件是___top==0___(要超出才为满)_______________。 4. 4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度 为____O(1)_____,在表尾插入元素的时间复杂度为____O n________。

经典数据结构面试题(含答案)

栈和队列的共同特点是__________________________ .栈通常采用的两种存储结构是______________________ .用链表表示线性表的优点是_______________________ 8.在单链表中,增加头结点的目的是___________________ 9.循环链表的主要优点是________________________- 12.线性表的顺序存储结构和线性表的链式存储结构分别是 __________________________ 13.树是结点的集合,它的根结点数目是_____________________ 14.在深度为5的满二叉树中,叶子结点的个数为_______________ 15.具有3个结点的二叉树有(_____________________ 16.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为____________________ 17.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是 ____________________________ 18.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为______________________ 19.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是_______________________ 20.数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。 在计算机中,算法是指_______________________ 算法一般都可以用哪几种控制结构组合而成_____________________ .算法的时间复杂度是指______________________ 5. 算法的空间复杂度是指__________________________ 6. 算法分析的目的是__________________________

(完整版)数据结构(c语言版)期末考试复习试题

《数据结构与算法》(c语言版)期末考复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位

B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。(1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i

数据结构第二章练习题 - 副本

《数据结构》第二章练习题 1.单项选择题 2.1链表不具备的特点是() A 可随机访问任一结点 B 插入删除不需要移动元素 C 不必事先估计存储空间 D 所需空间与其长度成正比 2.2 不带头节点的单链表head为空的判定条件是() A head==NULL B head->next==NULL C head->next==head D head!=NULL 2.3带头节点的单链表head为空的判定条件是() A head==NULL B head->next==NULL C head->next==head D head!=NULL 2.4 带头结点的双循环链表L为空的条件是() A L==NULL B l->next->==NULL C L->prior==NULL D L->next==L 2.5 非空的循环单链表head尾结点(由P所指向)满足() A P->next==NULL B P==NULL C P->next==head D P==head 2.6在双循环链表中的P所指结点之前插入s所指结点的操作是() A p->prior=s;s->next=p;p->prior>next=s;s->prior=p->prior; B p->prior=s;p->prior>next=s;s->next=p;s->prior=p->prior; C s->next=p;s->prior=p->prior; p->prior=s;p->right->next=s; D s->next=p;s->prior=p->prior;p->prior->next=s;p->prior=s; 2.7若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间 A 单链表 B 给出表头指针的单循环链表 C 双链表 D 带头结点的双循环链表 2.8某线性表最常用的操作时在最后一个结点之后插入一个结点或删除第一个结点,故采用()存储方式最节省运算时间 A 单链表B仅有头结点的单循环链表

数据结构期中笔试题答案

《数据结构》期中考试题答案 一、填空题(20分,每题2分) 1.逻辑结构、存储结构 2.便于插入和删除操作 3.方便运算的实现 4.算法执行过程中所需要的基本运算次数 5.存储结构 6.q.next=p.next ; p.next=q 7.递归算法 8.抽象类或接口 二、选择题(30分,每题2分) AACBB BDDCB AACAC 三、问答题(50分,每题10分) 1.什么是栈和队列?两者有何异同? 答:栈和队列都属于线性表结构,它们是两种特殊的线性表,栈的插入和删除操作都在线性表的一端进行,所以栈的特点是“后进先出”;而队列的插入和删除操作分别在线性表的两端进行,所以队列的特点是“先进先出”。 2.采用顺序存储结构的栈和队列,在进行插入、删除操作时需要移动数据元素吗?为什么? 答:采用顺序存储结构的栈和队列,在进行插入、删除操作时不需要移动数据元素,因为栈和队列均不能进行中间插入、删除操作。 3.什么是队列的假溢出?为什么顺序存储结构队列会出现假溢出?怎样解决队列的假溢出问题?链式存储结构队列会出现假溢出吗? 答:顺序队列,当入队的元素个数(包括已出队元素)超过数组容量时,队列尾下标越界,数据溢出。此时,由于之前已有若干元素出队,数组前部已空出许多存储单元,所以,这种溢出并不是因存储空间不够而产生的,称之为假溢出。 顺序队列之所以会产生假溢出现象,是因为顺序队列的存储单元没有重复使用机制。解决的办法是将顺序队列设计成循环结构。 链式存储结构队列不会出现假溢出。因为每次元素入队,都要申请新结点,数据不会溢出。 4.答案:(1) (a2, a4, …, ) (2)将单链表中偶数结点位置的元素值写入顺序表list 5.数据的存储结构有哪两种,各有什么特点? 答:数据存储结构的基本形式有两种:顺序存储结构和链式存储结构。 顺序存储结构使用一组连续的内存单元依次存放数据元素,元素在内存中的物理存储次序与它们的逻辑次序相同。 链式存储结构使用若干地址分散的存储单元存储数据元素,逻辑上相邻的数据元素在物理位置上不一定相邻,数据元素间的关系需要采用附加信息特别指定。

数据结构期末考试试题及答案

数据结构期末考试试题及答案 、选择题 评价一个算法时间性能的主要标准是()。1. A、算法易于调试 B、算法易于理解 C、算法的稳定性和正确性 D、算法的时间复杂度 )等五个特性。计算机算法具备有输入、输出、 2. A、可行性、可移植性和可扩充性 B、可行性、确定性和有穷性 C、确定性、有穷性和稳定性 D、XX、稳定性和XX 。带头结点的单链表head为空的判定条件是()3. A、h ead==NULL B、h ead->next==NULL C、head->next==head D、head!=NULL 以下关于线性表的说法不正确的是()。4. A、线性表中的数据元素可以是数字、字符、记录等不同类型。 B、线性表中包含的数据元素个数不是任意的。

C、线性表中的每个结点都有且只有一个直接前趋和直接后继。 D、存在这 样的线性表:表中各结点都没有直接前趋和直接后继。 在顺序表中,只要知道(),就可在相同时间内求出任一结点的存储地址。 5.A、基地址 B、结点大小 C、向量大小 D、基地址和结点大小 ()运算中,使用顺序表比链表好。6. A、插入 B、删除 C、根据序号查找 D、根据元素值查找一个长度为n的顺序表中,向第i个元素之前插入一个新元素时,需要向后移动()个元素7.A、n-i B、n-i+1 C、n-i-1 D、i ()适合作为经常在首尾两端操作线性表的存储结构。8. A、顺序表 B、单链表 C、循环链表 D、双向链表

栈和队列的共同点是() 9. A、都是先进后出 B、都是先进先出 C、只允许在端点处插入和删除元素 D、没有共同点 一个队列的入列序列是1234,则队列的输出序列是()。10. A 、4321 B 、12 3 4 C 、1432 D 、 3241队列与一般的线性表的区别在于()。11. A、数据元素的类型不同 B、运算是否受限制 C、数据元素的个数不同 D、逻辑结构不同 假上溢”现象会出现在()中。12. A、循环队列 B、队列 C、链队列 、顺序队列D.二、填空

数据结构考试题库含答案

数据结构习题集含答案 目录

选择题 第一章绪论 1.数据结构这门学科是针对什么问题而产生的(A ) A、针对非数值计算的程序设计问题 B、针对数值计算的程序设计问题 C、数值计算与非数值计算的问题都针对 D、两者都不针对 2.数据结构这门学科的研究内容下面选项最准确的是(D ) A、研究数据对象和数据之间的关系 B、研究数据对象 C、研究数据对象和数据的操作 D、研究数据对象、数据之间的关系和操作 3.某班级的学生成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那 么下面关于数据对象、数据元素、数据项描述正确的是(C ) A、某班级的学生成绩表是数据元素,90分是数据项 B、某班级的学生成绩表是数据对象,90分是数据元素 C、某班级的学生成绩表是数据对象,90分是数据项 D、某班级的学生成绩表是数据元素,90分是数据元素 4.*数据结构是指(A )。 A、数据元素的组织形式 B、数据类型 C、数据存储结构 D、数据定义 5.数据在计算机存储器内表示时,物理地址与逻辑地址不相同,称之为(C )。 A、存储结构 B、逻辑结构 C、链式存储结构 D、顺序存储结构 6.算法分析的目的是(C ) A、找出数据的合理性 B、研究算法中的输入和输出关系 C、分析算法效率以求改进 D、分析算法的易懂性和文档型性

7.算法分析的主要方法(A )。 A、空间复杂度和时间复杂度 B、正确性和简明性 C、可读性和文档性 D、数据复杂性和程序复杂性 8.计算机内部处理的基本单元是(B ) A、数据 B、数据元素 C、数据项 D、数据库 9.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储 比顺序存储要(B )。 A、低 B、高 C、相同 D、不好说 10.算法的时间复杂度取决于( C ) A 、问题的规模B、待处理数据的初始状态 C、问题的规模和待处理数据的初始状态 D、不好说 11.数据结构既研究数据的逻辑结构,又研究物理结构,这种观点(B )。 A、正确 B、错误 C、前半句对,后半句错 D、前半句错,后半句对 12.在数据结构中,从逻辑上可以把数据结构分成( C ) A、动态结构和静态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 13.线性表的顺序存储结构是一种( )的存储结构,线性表的链式存储结构是一种( A ) 存储结构。 A、随机存取 B、顺序存取 C、索引存取 D、散列存取 14.*下列程序的时间复杂度是(A ) for (i=1; i<=n; ++i){ for (j=1; j<=n; ++j){ c [i][j]=0;

相关主题
文本预览
相关文档 最新文档