您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数据结构部分期末复习题
算法与编程题举例软件方法学部分习题1.()产生软件危机的原因主要与两个方面的问题有关:A、软件在计算机中很难识别,存在磁盘中也看不到。B、软件设计对人的智商要求很高,也要求很高的资金投入。C、软件产品本身的特点与其它工业产品不一样,而且在软件的开发和维护过程中用的方法不正确。D、软件很难理解,硬件也很复杂。2.()可行性研究主要从以下几个方面进行研究:A、技术可行性,经济可行性,操作可行性。B、技术可行性,经济可行性,系统可行性。C、经济可行性,系统可行性,操作可行性。D、经济可行性,系统可行性,时间可行性。3.()软件开发瀑布模型中的软件定义时期各个阶段依次是:A、可行性研究,问题定义,需求分析。B、问题定义,可行性研究,需求分析。C、可行性研究,需求分析,问题定义。D、以上顺序都不对。4.结构程序设计的基本思想是()。5.软件生存周期可以分为几个大的阶段,每个阶段又可以进一步细分成哪些小的阶段?6.什么是软件?数据结构绪论部分习题一、选择题1.算法的计算量的大小称为计算的()。A.效率B.复杂性C.现实性D.难度2.算法的时间复杂度取决于()A.问题的规模B.待处理数据的初态C.A和B3.计算机算法指的是(1),它必须具备(2)这三个特性。(1)A.计算方法B.排序方法C.解决问题的步骤序列D.调度方法(2)A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性D.易读性、稳定性、安全性4.一个算法应该是()。A.程序B.问题求解步骤的描述C.要满足五个基本特性D.B和C.5.从逻辑上可以把数据结构分为()两大类。A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构二、判断题1.数据元素是数据的最小单位。()2.记录是数据处理的最小单位。()3.数据的逻辑结构是指数据的各数据项之间的逻辑关系;()4.算法的优劣与算法描述语言无关,但与所用计算机有关。()5.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。()6.算法可以用不同的语言描述,如果用C语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。()7.数据的物理结构是指数据在计算机内的实际存储形式。()8.数据结构的抽象操作的定义与具体实现有关。()9.在顺序存储结构中,有时也存储数据结构中元素之间的关系。()10.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。()11.数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。()12.数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构.()三简答题1.数据元素之间的关系在计算机中有几种表示方法?各有什么特点?(1)顺序存储方式。数据元素顺序存放,每个存储结点只含一个元素。存储位置反映数据元素间的逻辑关系。存储密度大,但有些操作(如插入、删除)效率较差。(2)链式存储方式。每个存储结点除包含数据元素信息外还包含一组(至少一个)指针。指针反映数据元素间的逻辑关系。这种方式不要求存储空间连续,便于动态操作(如插入、删除等),但存储空间开销大(用于指针),另外不能折半查找等。(3)索引存储方式。除数据元素存储在一地址连续的内存空间外,尚需建立一个索引表,索引表中索引指示存储结点的存储位置(下标)或存储区间端点(下标),兼有静态和动态特性。(4)散列存储方式。通过散列函数和解决冲突的方法,将关键字散列在连续的有限的地址空间内,并将散列函数的值解释成关键字所在元素的存储地址,这种存储方式称为散列存储。其特点是存取速度快,只能按关键字随机存取,不能顺序存取,也不能折半存取。线性表部分习题一选择题1.下述哪一条是顺序存储结构的优点?()A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?()A.线性表采用顺序存储,必须占用一片连续的存储单元。B.线性表采用顺序存储,便于进行插入和删除操作。C.线性表采用链接存储,不必占用一片连续的存储单元。D.线性表采用链接存储,便于插入和删除操作。3.线性表是具有n个()的有限序列(n0)。A.表元素B.字符C.数据元素D.数据项E.信息项4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表6.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1=i=n+1)。A.O(0)B.O(1)C.O(n)D.O(n2)7.线性表(a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为()A.O(i)B.O(1)C.O(n)D.O(i-1)8.在单链表指针为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;9.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()A.head==NULLB.head→next==NULLC.head→next==headD.head!=NULL二、判断1.链表中的头结点仅起到标识的作用。(×)2.顺序存储结构的主要缺点是不利于插入或删除操作。(√)3.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。(×)4.对任何数据结构链式存储结构一定优于顺序存储结构。(×)5.顺序存储方式只能用于存储线性结构。(×)6.线性表的特点是每个元素都有一个前驱和一个后继。(×)7.取线性表的第i个元素的时间同i的大小有关.(×)8.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。(×)9.链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。(√)三、填空1.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用_顺序_存储结构。2.线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是_(n-1)/2_。3.在一个长度为n的顺序表中第i个元素(1=i=n)之前插入一个元素时,需向后移动_n-i+1_个元素。4.在单链表中设置头结点的作用是:主要是使插入和删除等操作统一,在第一个元素之前插入元素和删除第一个结点不必另作判断;另外,不论链表是否为空,链表指针不变。5.根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成_单链表_和多重链表;而又根据指针的连接方式,链表又可分成(动态)链表和静态链表。6.链接存储的特点是利用_指针_来表示数据元素之间的逻辑关系。7.顺序存储结构是通过_物理上相邻表示元素之间的关系的;链式存储结构是通过_指针_表示元素之间的关系的。8.已知指针p指向单链表L中的某结点,则删除其后继结点的语句是:u=p-next;p-next=u-next;free(u);9.在单链表L中,指针p所指结点有后继结点的条件是:p-next!=null10.以下程序的功能是实现带附加头结点的单链表数据结点逆序连接,请填空完善之。voidreverse(SqListh)/*h为附加头结点指针;类型pointer*/{SqListp,q;p=h-next;h-next=NULL;while((1)_p!=null_){q=p;p=p-next;q-next=h-next;h-next=(2)__q__;}栈和队列部分习题一选择题1.对于栈操作数据的原则是()。A.先进先出B.后进先出C.后进后出D.不分顺序2.在作进栈运算时,应先判别栈是否(①),在作退栈运算时应先判别栈是否(②)。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③)。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的(④)分别设在这片内存空间的两端,这样,当(⑤)时,才产生上溢。①,②:A.空B.满C.上溢D.下溢③:A.n-1B.nC.n+1D.n/2④:A.长度B.深度C.栈顶D.栈底⑤:A.两个栈的栈顶同时到达栈空间的中心点.B.其中一个栈的栈顶到达栈空间的中心点.C.两个栈的栈顶在栈空间的某一位置相遇.D.两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.3.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1=i=n)个元素是()。A.不确定B.n-i+1C.iD.n-i4.某堆栈的输入序列为a,b,c,d,下面的四个序列中,不可能是它的输出序列的是()。A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b5.依次读入数据元素序列{a,b,c,d,e,f,g}进栈,每进一个元素,机器可要求下一个元素进栈或弹栈,如此进行,则栈空时弹出的元素构成的序列是以下哪些序列?A.{d,e,c,f,b,g,a}B.{f,e,g,d,a,c,b}C.{e,f,d,g,b,c,a}D.{c,d,b,e,f,a,g}6.循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是()。A.(rear-front+m)%mB.rear-front+1C.rear-front-1D.rear-front7.循环队列存储在数组A[0..m]中,则入队时的操作为()。A.rear=rear+1B.rear=(rear+1)mod(m-1)C.rear=(rear+1)modmD.rear=(rear+1)mod(m+1)8.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?()A.1和5B.2和4C.4和2D.5和19.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。A.(rear+1)MODn=frontB.rear=frontC.rear+1=frontD.(rear-l)MODn=front10.栈和队列的共同点是()。A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点11.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是()。A.6B.4C.3D.2二判断题1.消除递归不一定需要使用栈,此说法(√)2.栈是实现过程和函数等子程序所必需的结构。(√)3.两个栈共用静态存储空间,对头使用也存在空间溢出问题。(√)4.两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。(√)5.即使对不含相同元素的同一输入序列进行两组不同的合法的入栈和出栈组合操作,所得的输出序列也一定相同。(×)6.栈与队列是一种特殊操作的线性表。(√)7.若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列3,2,5,6,4,1.(√)8.栈和队列都是限制存取点的线性结构。(√)9.若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列1,5,4,6,2,3。(×)10.任何一个递归过程都可以转换成非递归过程。(√)填空题15.队列的特点是_先进先出。16.队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是_先进先出。17.已知链队列的头
本文标题:数据结构部分期末复习题
链接地址:https://www.777doc.com/doc-2334372 .html