当前位置:文档之家› 大二数据结构复习-第1-2章(带答案)

大二数据结构复习-第1-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、链表不具有的特点是:A、可随机访问任一个元素B、插入删除不需要移动元素C、不必事先估计存储空间D、所需空间与线性表长度成正比7、若线性表最常用的操作是存取第i个元素及其前驱的值,则采用()存储方式节省时间A、单链表B、双向链表C、单循环链表D、顺序表顺序表可以随机存取8、设指针P指向双链表的某一结点,则双链表结构的对称性可用()式来刻画A、p->prior->next->==p->next->nextB、p->prior->prior->==p->next->priorC、p->prior->next->==p->next->priorD、p->next->next==p->prior->prior9、以下说错误的是()A、对循环来说,从表中任一结点出发都能通过前后操作而扫描整个循环链表B、对单链表来说,只有从头结点开始才能扫描表中全部结点C、双链表的特点是找结点的前趋和后继都很容易D、对双链表来说,结点*P的存储位置既存放在其前趋结点的后继指针域中,也存放在它的后继结点的前趋指针域中。

10、在带头结点的循环链表中,将头指针改设为尾指针(rear)后,其头结点和尾结点的存储位置分别是( )A、rear和rear->next->nextB、rear->next 和rearC、rear->next->next和rearD、rear和rear->next11.以下说错误的是 ( )A、对于线性表来说,查找定位运算在顺序表和单链表上的量级均为O(n)B、读表元运算在顺序表上只需常数时间O(1)便可实现,因此顺序表是一种随机存取结构C、在链表上实现读表元运算的平均时间复杂性为O(1)D、插入、删除操作在链表上的实现可在O(n)时间内完成12、循环链表主要优点是()A、不再需要头指针了B、已知某个结点的位置后,能够容易找到它的直接前趋C、从表中任一结点出发都能扫描到整个链表D、在进行插入、删除运算时,能更好地保证链表不断开13、以下说法错误的是()A、数据的物理结构是指数据在计算机内实际的存储形式B、算法和程序没有区别,所以在数据结构中二者是通用的C、对链表进行插人和删除操作时,不必移动结点D、双链表中至多只有一个结点的后继指针为空14、以下说法正确的是A、线性结构的基本特征是:每个结点有且仅有一个直接前趋和一个直接后继B、线性表的各种基本运算在顺序存储结构上的实现均比在链式存储结构上的实现效率要低C、在线性表的顺序存储结构中,插入和删除元素时,移动元素的个数与该元素位置有关D、顺序存储的线性表的插入和删除操作不需要付出很大的代价,因为平均每次操作只有近一半的元素需要移动15、以下说法错误的是()A、求表长、定位这二种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低B、顺序存储的线性表可以随机存取C、由于顺序存储要求连续约存储区域所以在存储管理上不够灵活D、线性表的链式存储结构优于顺序存储结构16、以下说法错误的是()A、线性表的元素可以是各种各样的,逻辑上相邻的元素在物理位置上不一定相邻B、在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上不一定相邻C、在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻D、线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素17、以下说法正确的是()A、在单链表中,任何两个元素的存储位置之间都有固定的联系,因为可以从头结点进行查找任何一个元素B、在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构C、顺序存储方式只能用于存储线性结构D、顺序存储方式的优点是存储密度大、且插入、删除运算效率高18、线性表L=(a1,a2,...,ai,...,an),下列说法正确的是( )A、每个元素都有一个直接前驱和直接后继B、线性表中至少要有一个元素C、表中诸元素的排列顺序必须是由小到大或由大到小的D、除第一个元素和最后一个元素外其余每个元素都有一个数且仅有一个直接前驱和直接后继19、线性表若采用链表存储结构时,要求内存中可用存储单元的地址( )A、必需是联系的B、部分地址必须是连续的C、一定是不连续的D、连续不连续都可以20.设REAR是指向非空带头结点的循环单链表的尾指针,则删除表首结点的操作可表示为( )A、p=rear;rear=rear->next;free(p)B、rear=rear->next;free(rear);C、rear=rear->next->next;free(rear);D、p=rear->next->next;rear->next->next=p->next;free(p);21、单链表中,增加头结点的目的是为了 ( )A、使单链表至少有一个结点B、标示表结点中首结点的位置C、方便运算的实现D、说明单链表是线性表的链式存储实现22、带头结点的单链表Head为空的判定条件是A、Head==NullB、Head->next==NULLC、Head->next==Head23、空的单循环链表L的尾结点*P,满足A、P->next==NULLB、P==NULLC、P->next==LD、P==L24、算法的时间复杂度是指()A、执行算法程序所需要的时间B、算法执行过程中所需要的基本运算次数C、算法程序的长度D、算法程序中的指令条数25、算法的空间复杂度是指()A、执行算法程序所占的存储空间B、算法程序中的指令条数C、算法程序的长度D、算法执行过程中所需要的存储空间26、下列叙述中正确的是()A、线性表是线性结构B、栈和队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构27、数据的存储结构是指()A、数据所占的存储空间量B、数据的逻辑结构在计算机中的表示C、数据在计算机中的顺序存储方式D、存储在外存中的数据28、下列属于线性数据结构的是( )A、队列B、树C、图D、不确定29、单链表的每个结点中包括一个指针next,它指向该结点的后继结点。

现要将指针q指向的新结点插入到指针P指向的单链表结点之后,下面的操作序列中哪一个是正确的?( )A、P->next = q->next; q = p->next;B、P->next = q; q->next = p->next;C、q->next = p->next; p->next=q;D、q = p->next; p->next = q->next;30、在一个单链表中,若删除p所指结点的后续结点,则执行( )A、p->next=p->next->next;B、p=p->next; p->next=p->next->next;C、p->next=p->next;D、p=p->next->next;31、循环链表指( )A、最后一个节点的指针域总是指向链表头B、可以自由膨胀的链表C、链表含有指向上一级节点的指针域D、都不是32、线性表是( ) 。

A、一个有限序列,可以为空;B、一个有限序列,不能为空;C、一个无限序列,可以为空;D、一个无序序列,不能为空。

二、填空题33、下面程序段的时间复杂度是__ O(n*m)_for(i=0;i<n;i++)for(j=0;j<m;j++)Array[i][j]=0;34、下面程序段的时间复杂度是____死循环____i=0;while(i<=n)i=i*3;35、在下面程序段中,s=s+p语句的执行次数为n ,p*=j语句的执行次数为n(n+1)/2,该程序段的时间复杂度为O(n2)。

int i=0,s=0;while (++i<=n){ int p=1;for (int j=1;j<=i;j++)p*=j;s=s+p }36、以下为求单链表表长的运算,分析算法,请在____处填上正确的语句。

int length_lklist(linklist head)/*求表head的长度*/{__p=head______;j=0;while(p->next!=NULL){__p=p->next____;j++;}return(j); /*回传表长*/}37、以下为单链表的定位运算,分析算法,请在____处填上正确的语句。

int locate_lklist(lklist head,datatype x)/*求表head中第一个值等于x的结点的序号。

不存在这种结点时结果为0*/{ p=head;j=0;while(____p->next!=NULL && p->data!=x __){ p=p->next;j++;}if ( p->data=x ) return( j );else return(0);}38、以下为单链表按序号查找的运算,分析算法,请在____处填上正确的语句。

相关主题