数据结构期末复习:第二章 线性表(选择题21道+判断题10道+程序填空3道)顺序表/链表/循环链表

数据结构期末复习:第二章 线性表(选择题21道+判断题10道+程序填空3道)顺序表/链表/循环链表 数据结构 期末复习 第二章 线性表一、选择题1、设有一个长度为n的顺序表要在第i个元素之前也就是插入元素作为新表的第i个元素插入一个元素则移动元素个数为C。A. n-iB. n-i-1C. n-i1D. i2、设有一个长度为n的顺序表要删除第i个元素移动元素的个数为C。A. I B. n-i-1 C. n-i D. n-i13、在一个单链表中p、q分别指向表中两个相邻的结点且q所指结点是p所指结点的直接后继现要删除q所指结点可用语句B。A. q-nextNULL B. p-nextq-nextC. pq-next D. p-nextq4、在一个单链表中p所指结点之后插入一个s所指的结点时可执行C。A. p-next s; s-next p-next B. p-nexts-next;C. s-nextp-next; p-nexts; D. ps-next5、非空的单向循环链表的尾结点满足A设头指针为head指针p指向尾结点。A. p-nexthead B. pNULLC. p head D. p-nextNULL6、链表不具有的特点是B。A. 不必事先估计存储空间B. 可随机访问任一元素C. 逻辑上相邻的元素在物理位置上不一定相邻D. 插入删除不需要移动元素7、带头结点的链表为空的判断条件是C设头指针为head。A. head-nextheadB. head NULLC. head-nextNULLD. head!NULL8、在一个长度为n的顺序表中为了删除第5个元素由第6个元素开始从后到前依次移动了15个元素。则原顺序表的长度为C。A. 19 B. 21 C. 20 D. 259、有关线性表的正确说法是D。A. 线性表至少要求一个元素B. 每个元素都有一个直接前驱和一个直接后继C. 表中的元素必须按由小到大或由大到下排序D. 除了一个和最后一个元素外其余元素都有一个且仅有一个直接前驱和一个直接后继10、向一个有127个元素的顺序表中插入一个新元素并保持原来的顺序不变平均要移动A个元素。A. 63.5 B. 7C. 63 D. 811、一个顺序表第一个元素的存储地址是90每个元素的长度为2则第6个元素的地址是D。A. 106 B. 98C. 102 D. 10012、在一个不带头结点的单循环链表中p、q分别指向表中第一个结点和尾结点现要删除第一个结点且p、q仍然分别指向新表中第一个结点和尾结点。可用的语句是pp-next;和A。A. q-nextp B. p-nextqC. qp D. pq-next13、在线性表的顺序结构中以下说法正确的是D。A. 逻辑上相邻的元素在物理位置上不一定相邻B. 数据元素是不能随机访问的C. 进行数据元素的插入、删除效率较高D. 逻辑上相邻的元素在物理位置上也相邻14、对链表, 以下叙述中正确的是A。A. 不能随机访问任一结点B. 插入删除元素的操作一定要要移动结点C. 结点占用的存储空间是连续的D. 可以通过下标对链表进行直接访问15、设有一个长度为n的顺序表要在第i个元素之前也就是插入元素作为新表的第i个元素插入一个元素则移动元素个数为A。A. n-i1 B. iC. n-i-1 D. n-i16、在一个单链表HL中若要向表头插入一个由指针p指向的结点则执行_____B____。A. HLp;p-nextHL;B. p-nextHL;HLp;C. p-nextHL;pHL;D. p-nextHL-next;HL-nextp;17、在一个单链表中已知q所指结点是p所指结点的前驱结点若在q和p之间插入s结点则以下操作哪个是正确的D。A. s-nextp-nextp-nextsB. p-nexts-nexts-nextpC. p-nextss-nextqD. q-nextss-nextp18、在循环双链表的p所指结点之后插入s所指结点的操作是D。A.p-rightss-leftpp-right-leftss-rightp-rightB. p-rightsp-right-leftss-leftps-rightp-rightC. s-leftps-rightp-rightp-rightsp-right-leftsD. s-leftps-rightp-rightp-right-leftsp-rights19、若HL为一个不带表头结点的循环单链表的表头指针若有HL-next HL条件存在则该循环单链表是B。A.空表 B.只有1个元素C.空表或只有一个元素 D.非空表20、若HL为一个带表头结点的单链表的表头指针则该表为空表的条件是B。A.HLNULL B.HL-nextNULLC.HL-nextHL D.HL!NULL21、设头指针为head的非空的单向链表指针p指向尾结点,则通过以下操作D可使其成为单向循环链表。选择一项A. head p; B. phead;C. p-next NULL ; D. p-nexthead;二、判断题1、 设有一个不带头结点的单向循环链表结点的指针域为next指针p指向尾结点现要使p指向第一个结点可用语句pp-next;。√2、 设有一个单向链表结点的指针域为next头指针为headp指向尾结点为了使该单向链表改为单向循环链表可用语句p-nexthead 。√3、 设有一个单向循环链表结点的指针域为next头指针为head指针p指向表中某结点若逻辑表达式p-nexthead;的结果为真则p所指结点为尾结点。√4、 要在一个单向链表中p所指向的结点之后插入一个s所指向的新结点若链表中结点的指针域为next可执行 p-nexts; s-next p-next的操作。×5、 要在一个单向链表中删除p所指向的结点已知q指向p所指结点的直接前驱结点若链表中结点的指针域为next则可执行q-next p-next。√6、 要在一个带头结点的单向循环链表中删除头结点得到一个新的不带头结点的单向循环链表若结点的指针域为next头指针为head尾指针为p则可执行headhead- next; p-nexthead。√7、 设有一个单向循环链表头指针为head链表中结点的指针域为nextp指向尾结点的直接前驱结点若要删除尾结点得到一个新的单向循环链表可执行操作p-nexthead。√8、 设有一个长度为40的顺序表要删除第8个元素需移动元素的个数为3。×9、 线性表用关键字的顺序方式存储可以用二分法排序。×10、线性表用顺序方式存储可以随机访问。√三、程序填空1、设线性表以不带头结点的单向链表存储链表头指针为head以下程序的功能是输出链表中各结点中的数据域data,完成程序中空格部分。#define NULL 0void main{ NODE *head ,*p ;phead; /*p为工作指针*/do{printf(“%d\n”, [ 1 ];[ 2 ];}while [ 3 ]答案1p data2pp next3p!NULL2、设有一个头指针为head的不带头结点单向链表p、q是指向链表中结点类型的指针变量p指向链表中结点a, 设链表中没有结点的数据域与结点a的数据域相同,写出相关语句(1)使该单向链表成为单向循环链表(2)插入结点s,使它成为a结点的直接前驱qp; xp-data;while[ 4 ]qq-next;q-nexthead;qp; pp-next;while(p-data!x){ qp;[ 5 ]}s-nextp;[ 6 ]答案4q next!NULL5pp next6q nexts3、设有一个不带头结点的单向链表头指针为headp、prep是指向结点类型的指针该链表在输入信息时不慎把相邻两个结点的信息重复输入以下程序段是在该单向链表中查找这相邻两个结点把该结点的数据域data打印出来并把其中之一从链表中删除填写程序中的空格。prephead;pprep-next;while(p-data!prep-data){prepp;[ 7 ];}printf(“min%d”, [ 8 ]);prep-next [ 9 ];答案7pp-next;8p-data或prep-data9p-next