第1章 绪论
一、选择题
1.算法的计算量的大小称为计算的( )。
A.效率 B.复杂性 C.现实性 D.难度 2.一个算法是( )。
A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C 3.从逻辑上可以把数据结构分为( )两大类。
A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 二、判断题
1.数据元素是数据的最小单位。( )
2.数据的逻辑结构是指数据的各数据项之间的逻辑关系;( ) 3.算法的优劣与算法描述语言无关,但与所用计算机有关。( ) 4.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。( )
5.算法可以用不同的语言描述,如果用C语言来描述,则算法实际上就是程序了。( ) 6.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( ) 三、填空
1.数据的物理结构包括数据元素的表示和 的表示。
2.对于给定的n个元素,可以构造出的四种逻辑结构有:集合、 和图状结构。 3.数据的逻辑结构是指 。
4.一个数据结构在计算机中 称为存储结构。 5.数据结构中评价算法的两个重要指标是 。
6.一个算法具有5个特性: 、有零个或多个输入、有一个或多个输出。 7.计算机执行下面的语句时,语句s的执行次数为 _______ 。 for(i=l;i for(j=n;j>=i;j--) s; 8.下面程序段的时间复杂度为________。(n>1) sum=1;for(i=0;sum 1.数据结构是一门研究什么内容的学科? 2.回答问题 (1)在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系? (2)若逻辑结构相同但存储结构不同,则为不同的数据结构。这样的说法对吗?举例说明。 3.数据结构与数据类型有什么区别? 4.有下列运行时间函数: 232 (1)T1 (n)=1000; 2)T2(n)=n+1000n; (3)T3(n)=3n+100n+n+1; 分别写出相应的大O表示的运算时间。 第2章 线性表 一 选择题 1.下述哪一条是顺序存储结构的优点?( ) 1 A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示 2.下面关于线性表的叙述中,错误的是哪一个?( ) A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 3.线性表是具有n个( )的有限序列(n>0)。 A.表元素 B.字符 C.数据元素 D.数据项 4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。 A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表 5.链表不具有的特点是( ) A.插入、删除不需要移动元素 B.可随机访问任一元素 C.不必事先估计存储空间 D.所需空间与线性长度成正比 6.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( )(1<=i<=n+1)。 2 A. O(0) B. O(1) C. O(n) D. O(n) 7.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为( )。 A.O(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1) 8.线性表(a1,a2,?,an)以链式方式存储时,访问第i位置元素的时间复杂性为( ) A.O(i) B.O(1) C.O(n) D.O(i-1) 9.在单链表指针为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; 10.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( ) A.head==NULL B.head->next==NULL C.head->next==head D.head!=NULL 二、判断题 1.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。( ) 2.对任何数据结构链式存储结构一定优于顺序存储结构。( ) 3.集合与线性表的区别在于是否按关键字排序。( ) 4.线性表的特点是每个元素都有一个前驱和一个后继。( ) 5.循环链表不是线性表. ( ) 6.线性表就是顺序存储的表。( ) 三、填空题 1.线性表L=(a1,a2,?,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是________。 2.在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动________个元素。 3.一个具有n个结点的单链表,在已知的结点后插入一个新结点的时间复杂度为_______。 4.一个具有n个结点的单链表,在给定值的结点后插入一个新结点的时间复杂度为_____。 5.顺序存储结构是通过________表示元素之间关系的;链式存储结构是通过指针表示元素之间关系的。 6.已知指针p指向单链表L中的某结点,则删除其后继结点的语句是:________ 2 7.在单链表L中,指针p所指结点有后继结点的条件是:__ 。 四、应用题 1.线性表有两种存储结构:一是顺序表,二是链表。试问: (1)如果有 n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。在此情况下,应选用哪种存储结构? 为什么? (2)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?为什么? 2.线性表的顺序存储结构具有三个弱点:其一,在作插入或删除操作时,需移动大量元素;其二,由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;其三,表的容量难以扩充。线性表的链式存储结构是否一定都能够克服上述三个弱点,试讨论之。 3.线性表(a1,a2,?,an)用顺序映射表示时,ai和ai+1(1<=i 4. 设单链表结点指针域为next,试写出删除链表中指针p所指结点的直接后继的C语言语句。 五、算法设计题 1.假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。 2.已知非空线性链表由list指出,链结点的构造为(data,next).请写一算法,将链表中数据域值最小的那个链结点移到链表的最前面。要求:不得额外申请新的链结点。 3.设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法: (1)找出最小值结点,且打印该数值; (2)若该数值是奇数,则将其与直接后继结点的数值交换; (3)若该数值是偶数,则将其直接后继结点删除。 第3章 栈和队列 一、选择题 1.对于栈操作数据的原则是( )。 A. 先进先出 B. 后进先出 C. 后进后出 D. 不分顺序 2.一个栈的输入序列为123?n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是( )。 A. 不确定 B. n-i+1 C. i D. n-i 3.若一个栈的输入序列为1,2,3,?,n,输出序列的第一个元素是i,则第j个输出元素是( )。 A. i-j-1 B. i-j C. j-i+1 D. 不确定的 4.有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?( ) A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6 5.输入序列为ABC,可以变为CBA时,经过的栈操作为( ) A. push,pop,push,pop,push,pop B. push,push,push,pop,pop,pop C. push,push,pop,pop,push,pop D. push,pop,push,push,pop,pop 6.若栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是( )。 A.top:=top+1; V[top]:=x B. V[top]:=x; top:=top+1 C. top:=top-1; V[top]:=x D. V[top]:=x; top:=top-1 7.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)栈 3 顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是( )。 A.|top[2]-top[1]|=0 B.top[2]+1=top[1] C.top[1]+top[2]=m D.top[1]=top[2] 8.一个递归算法必须包括( )。 A.递归部分 B.终止条件和递归部分 C.递推部分 D.终止条件和递推部分 9.设计一个判别表达式中左,右括号是否配对出现的算法,采用( )数据结构最佳。 A.线性表的顺序存储结构 B. 队列 C. 线性表的链式存储结构 D. 栈 10.用链式方式存储的队列,在进行删除运算时( )。 A.仅修改头指针 B.仅修改尾指针 C.头、尾指针都要修改 D.头、尾指针可能都要修改 11.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为( )。 A.(rear-front+m)%m B.rear-front+1 C.(front-rear+m)%m D.(rear-front)%m 12.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是 ( )。 A.(rear+1)%n=front B. rear=front C.rear+1=front D. (rear-l)%n=front 13.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是( )。 A. 6 B. 4 C. 3 D. 2 14.某个车站呈狭长型,宽度只能容下一辆车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入纪录为:“进,出,进,进,进,出,出,进,进,进,出,出”。假设车辆入站的顺序为1,2,3,??,则车辆出站的顺序为( )。 A.1,2,3,4,5 B.1,4,3,7,6 C.1,2,4,5,7 D.1,4,3,7,2 二、判断题 1.两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。( ) 2.即使对不含相同元素的同一输入序列进行两组不同的合法的入栈和出栈组合操作,所得的输出序列也一定相同。( ) 3.若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列3,2,5,6,4,1。( ) 4.栈和队列都是限制存取点的线性结构。( ) 5.只有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈。( ) 6.队列是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。( ) 7.循环队列也存在空间溢出问题。( ) 三、填空题 1._______是限定仅在表尾进行插入或删除操作的线性表。 2.一个栈的输入序列是:1,2,3则不可能的栈输出序列是_______。 3.设有一个空的顺序栈,栈顶指针为1000H,现有输入序列为1,2,3,4,5,经过PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH之后,栈顶指针值是_______H。每个元素占4个字节。 4.用I表示入栈操作,O表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的I和O的操作串为_______。 5.循环队列的引入,目的是为了克服_______。 6.设循环队列用数组A[1..M]表示,队首、队尾指针分别是front和rear,判定队满的条件为_______。 7.设循环队列存放在向量sq.data[0..M]中,则队头指针sq.front在循环意义下的出队操作可表示为_______。 4
相关推荐: