数据结构c语言版试题大全(含答案) 联系客服

发布时间 : 星期一 文章数据结构c语言版试题大全(含答案)更新完毕开始阅读13adb34dc850ad02de804116

2 线性表

沈阳理工大学应用技术学院

信息与控制学院 计算机科学与技术教研室

2011-5-8

- 13 -

数据结构复习题:线性表 单选题

1、在一个长度为n的顺序表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需向后移动_____个元素。 2、从一个具有n个节点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较_____个结点。 3、在一个单链表中,已知*q结点是*p结点的前驱结点,若在*q和*p之间插入*s结点, 则执行_____。 4、线性表是_____ 。

5、对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的, 删除一个元素时大约要移动表中的_____个元素。

6、线性表采用链式存储时,其地址_____。

7、设单链表中指针p指着结点m,指针f指着将要插入的新结点x,当x插在链表中最后一个结点m之后时,只要先修改_____后修改p->link=f即可。

8、在双向链表存储结构中,删除p所指的结点时需修改指针_____。

9、在双向链表存储结构中,删除p所指的结点的前趋结点(若存在)时需修改指针_____。 10、根据线性表的链式存储结构,每个结点所含指针的个数,链表分为单链表和_____。 11、在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上_____。 12、链表不具备的特点是_______。

13、不带头结点的单链表head为空的判定条件是______。 14、带头结点的单链表的head为空的判定条件是______。 15、带头结点的双循环表L为空表的条件是______。

16、非空的循环单链表head的尾结点(由p所指向)满足_______。

17、在循环双链表的p所指结点之前插入s所指结点的操作是_______。

18、若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用______存储方式最节省运算时间。

19、某线性表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点,故采用_____存储方式最节省运算时间。

20、需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是_______。 21、如果最常用的操作是取第i个结点及其前驱,则采用______存储方式最节省时间。

22、在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是______。 23、在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行________操作与链表的长度有关。 24、设线性表有n个元素,以下算法中,_______在顺序表上实现比在链表上实现效率更高。 25、设线性表中有2n个元素,算法_______,在单链表上实现要比在顺序表上实现效率更高。 26、与单链表相比,双链表的优点之一是________。 27、如果对线性表的运算只有4种,即删除第一个元素,删除最后一个元素,在第一个元素前面插入新元素,在最后一个元素的后面插入新元素,则最后使用________。

28、如果对线性表的运算只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用_______。

29、设有两个长度为n的单链表,结点类型相同。若以h1为表头指针的链表是非循环的,以h2为表头指针的链表是循环的,则_______。

30、在长度为n的______上,删除第一个结点,其算法的时间复度为O(n)。

31、将两个各有n个元素的有序顺序表归并成一个有序顺序表,其最少的比较次数是_____。 32、带头结点的单链表L为空的判定条件是______。

33、在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是_______。 34、在一个长度为n(n>1)的带头结点的单链表h上,,另设有尾指针r(指向尾结点),执行_______操作与链

- 14 -

表的长度有关。

35、在一个双链表中,在*p结点之后插入结点*q的操作是______。 36、在一个双链表中,在*p结点之前插入*q结点的操作是______。 37、在一个双链表达式,删除*p结点的操作是_______。

38、在一个双链表中,删除*p结点之后的一个结点的操作是________。 39、非空的循环单链表L的尾结点(由p所指向)满足______。 40、带头结点的双循环链表L为空表的条件是______。

41、若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用_________存储方式最节省运算时间。

42、如果对含有n(n>1)个元素的线性表的运算只有4种:删除第一个元素;删除最后一个元素;在第一个元素前面插入新元素;在最后一个元素的后面插入新元素,则最好使用________。

43、某线性表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点,则采用_______存储方式最节省运算时间。

44、设有两个长度为n的单链表,结点类型相同,若以h1为头结点的链表是非循环的,以h2为头结点指针的链表是循环的,则________。

45、在长度驎n(n>1)的______上,删除第一个元素,其算法的时间复杂度为O(n)。 46、元素A、B、C、D依次进顺序栈后,栈顶元素是_______,栈底元素是______。 47、经过以下栈运算后,X的值是______。

InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s,x);

48、经过以下的栈运算后,StackEmpty(s)的值是______。 InitStack(s);Push(s,a);Push(s,b);Pop(s,x);Pop(s,y)

49、设一个栈的输入序列为A、B、C、D,则借助一个栈所得到的输出序列不可能是______。 50、若线性表最常用的运算是存取第i个元素及其前驱的值,则采用______存储方式节省时间. 51、链表不具备的特点是______.

52、在一个长度为n的顺序存储的线性表中,向第i个元素(1<=i<=n+1)位置插入一个新元素时,需要从后向前依次后移_________个元素.

53、在一个长度为n的顺序存储的线性表中,删除第i个元素(1<=i<=n)时,需要从前向后依次前移_________个元素.

54、在一个长度为n的线性表中顺序查找值为x的元素时,查找成功时的平均查找长度(即x同元素的平均比较次数,查找每个元素的概率都相等)为( ).

57、在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行_________。 数据结构复习题答案:线性表 单选题

1、n-1|n-i+1|n-i-1|I B 2、n|n/2|(n-1)/2|(n+1)/2 D

3、s->next=p->next; p->next=s;|p->next=s->next; s->next=p;|q->next=s; s->next=p;|p->next=s; s->next=q; C

4、一个有限序列,可以为空。|一个有限序列,不能为空。|一个无限序列,可以为空。|一个无限序列,不能为空。 A

5、n+1|n-1|(n-1)/2|n C 6、必须是连续的。|部分地址必须是连续的。|一定是不连续的。|连续与否均可以。D 7、f->link=p;|f->link=p->link;|p->link=f->link;|f=nil; B 8、((p->rlink) ->rlink) ->link=p;p->rlink=(p->rlink) ->rlink;|(p->llink) ->rlink=p->rlink;(p->rlink)

->llink=p->llink;|p->llink=(p->llink) ->llink;((p->llink) ->llink) ->rlink=p;|((p->llink) ->llink) ->rlink=p;p->llink=(p->llink)

- 15 -

->llink; B

9、((p->llink) ->llink) ->rlink=p;p->llink=(p->llink) ->llink;|((p->rlink) ->rlink) ->llink=p;p->rlink=(p->rlink)

->rlink;|(p->llink) ->rlink=p->rlink;(p->rlink) ->llink=p->llink;| p->llink=(p->llink) ->llink;((p->llink) ->llink) ->rlink=p; A

10、循环链表|多重链表|普通链表|无头结点链表 B 11、一定相邻|不一定相邻|有时相邻| B

12、可随机访问任一结点|插入删除不需要移动元素|不必事先估计存储空间|所需空间与其长度成正比 A

13、head==NULL|head->next==NULL|head->next==head|head!=NULL A 14、head==NULL|head->next==NULL|head->next==head|head!=NULL B 15、L=NULL|L->next==NULL|L->prior==NULL|L->next==L D 16、p->next==NULL|p==NULL|p->next==head|p==head C 17、

p->prior=s;s->next=p;p->prior->next=s;s->prior=p->prior;|p->prior=s;p->prior->next=s;s->next=p;s->prior=p->prior;|s->next=p;s->prior=p->prior;p->prior=s;p->right->next=s;|s->next=p;s->prior=p->prior;p->prior->next=s;p->prior=s; D

18、单链表|给出表头指针的单循环链表|双链表|带头结点的双循环链表 D 19、单链表|仅有头结点的单循环链表|双链表|仅有尾指针的单循环链表 D 20、单链表|静态链表|线性链表|顺序存储结构 B 21、单链表|双链表|单循环链表|顺序表 D 22、O(1)|O(n)|O(n2)|O(nlog2n) B

23、删除单链表中的第一个元素|删除单链表中的最后一个元素|在单链表第一个元素前插入一个新元素|在单链表最后一个元素后插入一个新元素 B

24、输出第i(0<=i<=n-1)个元素值|交换第0个元素与第1个元素的值|顺序输出这n个元素的值|输出与给定值x相等的元素在线性表中的序号 A 25、删除所有值为x的元素|在最后一个元素的后面插入一个新元素|顺序输出前k个元素|交换第i个元素和第2n-i-1个元素的值(i=0,i,?,n-1) A

26、插入、删除操作更简单|可以进行随机访问|可以省略表头指针或表尾指针|顺序访问相邻结点更灵活 D 27、只有表尾指针没有头指针的循环单链表|只有表尾指针没有表头指针的非循环双链表|只有表头指针没有表尾指针的循环双链表|既有表头指针也有表尾指针的循环单链表 C

28、只有表头指针没有表尾指针的循环单链表|只有表尾指针没有表头指针的循环单链表|非循环双链表|循环双链表 B

29、对于两个链表来说,删除第一个结点的操作,其时间复杂度都是O(1)|对于两个链表来说,删除最后一个结点的操作,其时间复杂度都是O(n)|循环链表要比非循环链表占用更多的内存空间|h1和h2是不同类型的变量 B 30、只有表头指针的不带表头结点的循环单链表|只有表尾指针的不带表头结点的循环单链表|只有表尾指针的带表头结点的循环单链表|只有表头指针的带表头结点的循环单链表 A

31、n|2n-1|2n|n-1 A 32、L==NULL|L->next==NULL|L->next==L|L!=NULL B 33、O(1)|O(n)|O(n^2)|O(nlog2n) B

34、删除单链表中的第一个元素|删除单链表中的最后一个元素|在单链表第一个元素前插入一个新元素|在单链表最后一个元素后插入一个新元素 B 35、

- 16 -