线性表习题2

合集下载

数据结构习题及答案与实验指导(线性表)2

数据结构习题及答案与实验指导(线性表)2

第2章线性表线性表是一种最基本、最常用的数据结构,它有两种存储结构——顺序表和链表。

本章主要介绍线性表的定义、表示和基本运算的实现。

重点讨论了线性表的存储结构,以及在顺序、链式两种存储结构上基本运算的实现。

重点提示:●线性表的逻辑结构特征●线性表的顺序存储和链式存储两种存储结构的特点●在两种存储结构下基本操作的实现2-1 重点难点指导2-1-1 相关术语1.线性表线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列,通常记为:(a1,a2,…,a n),其中n为表长,n=0时称为空表。

要点:一种逻辑结构,其数据元素属于相同数据类型,之间的关系是线性关系。

2.顺序表顺序存储的线性表。

要点:按线性表中的元素的逻辑顺序依次存放在地址连续的存储单元里,其存储特点:用物理上的相邻实现逻辑上的相邻。

3.链表用链表存储的线性表。

要点:链表是通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的,对每个结点的地址是否连续没有要求。

4.单链表每个结点除了数据域外还有一个指向其后继的指针域。

要点:通常将每个元素的值和其直接后继的地址作为一个结点,通过每个结点中指向后继结点的指针表示线性表的逻辑结构。

5.头指针要点:头指针是一个指针变量,里面存放的是链表中首结点的地址,并以此来标识一个链表。

如链表H,链表L等,表示链表中第一个结点的地址存放在指针变量H、L中。

通常用头指针来惟一标识一个链表。

6.头结点要点:附加在第一个元素结点之前的一个结点,头指针指向头结点。

当该链表表示一个非空的线性表时,头结点的指针域指向第一个元素结点;为空表时,该指针域为空。

7.头结点的作用要点:其作用有两个,一是使对空表和非空表的处理得到统一;二是在链表的第一个位置上的操作和在其他位置上的操作一致,无需特殊处理。

2-1-2 线性表的顺序存储1.顺序表顺序存储的线性表称为顺序表。

其特点是:用一组地址连续的存储单元来依次存放线性表的数据元素,因此数据元素的逻辑顺序和物理次序一致(这是顺序存储的核心所在)。

第二章线性表习题

第二章线性表习题

第二章线性表习题1 .填空题(1) 链表中逻辑上相邻的元素的物理位置( ) 相连。

(2) 在单链表中除首结点外,任意结点的存储位置都由( ) 结点中的指针指示。

(3) 在单链表中,设置头结点的作用是在插入或删除首结点时不必对( ) 进行处理。

(4) 已带头结点的单链表L ,指针p 指向L 链表中的一个结点,指针q 是指向L 链表外的一个结点,则:在指针p 所指结点后插入q 所指结点的语句序列是( ) ;在指针p 所指结点前插入q 所指结点的语句序列是( ) ;将q 所指结点插入在链表首结点的语句序列是( ) ;将q 所指结点插入在链表尾结点的语句序列是( ) 。

(5) 已知带表头结点的单链表L ,指针p 指向L 链表中的一个结点(非首结点,非尾结点),则:删除指针p 所指结点的直接后继结点的语句是( ) 。

删除指针p 所指结点的直接前驱结点的语句序列是( ) 。

删除指针p 所指结点的语句序列是( ) 。

删除首结点的语句序列是( ) 。

⑤删除尾结点的语句序列是( ) 。

(6) 已知指针p 指向双向链表中的一个结点(非首结点,非尾结点),则:将结点s 插入在指针p 所指结点的直接后继位置的语句是( ) 。

将结点s 插入在指针p 所指结点的直接前驱位置的语句是( ) 。

删除指针p 所指结点的直接后继结点的语句序列是( ) 。

删除指针p 所指结点的直接前驱结点的语句序列是( ) 。

⑤删除指针p 所指结点的语句序列是( ) 。

(7) 线性表的存储结构有顺序存储和( ) 存储两种。

(8) 线性表的元素长度为4 ,在顺序存储结构下Loc(ai)=2000 ,则Loc(ai +1)=( ) 。

(9) 线性表a 的元素长度为L ,在顺序存储结构下Loc(ai)=Loc(a1)+( ) 。

(10) 在线性表的链式存储结构中,某结点的指针字段指向该结点的( ) 两种存储。

(11) 线性表的元素长度为4 ,Loc(ai +1)=1000 ,则Loc(a3)=( ) 。

第二章 线性表 练习题

第二章 线性表 练习题

一、选择题1.线性表的链接实现有利于( A )运算。

(A)插入 (B)读表元 (C)查找 (D)定位2.设单链表中指针p指向结点A,若要删除A之后的结点(若存在),则修改指针的操作为( A)。

(A)P一>next=p一>next一>next (B)p=P一>next(C)p=P一>next一>next (D)p一>next=p3.线性表采用链式存储时,其地址( D )。

(A)必须是连续的 (B)部分地址必须是连续的(c)一定是不连续的 (D)连续与否均可以4.在一个具有n个结点的单链表中查找其值等于x的结点.在查找成功的情况下需平均比较( c)个元素结点。

(A) n/2 (B) n (C) (n+1)/2 (D) (n-1)/25.在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是(B)。

(A) p->next=s; s->prior=p; p->next->prior=s; s->next=p->next;(B) s->prior=p; s->next=p->next; p->next=s; p->next->prior=s;(C) p->next=s; p->next->prior=s; s->prior=p; s->next=p->next;(D) s->prior=p; s->next=p->next; p->next->prior=s; p->next=s;6.已知一个有序表为(13,18,24,35,47,50,62,83,90,115,134),当二分查找值为90的元素时,需( D )次比较可查找成功。

(A)1 (B)2 (C)3 (D)47.在顺序存储的线性表R[029]上进行顺序查找的平均查找长度为(①),进行二分查找的平均查找长度为(②),讲行分块查找(设分为5块)的平均查找长度为(③)①(A)15 (B)15.5 (C)16 (D)20②(A)4 (B)62/15 (C)64/15 (D)25/6③(A)6 (B)11 (C)5 (D)6.58.若线性表最常用的操作是存取第i个元素及其前驱元素的值,则采用( B )存储方式最节省时间。

数据结构习题及答案 (2)

数据结构习题及答案 (2)

第二章线性表一、选择题1.一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )(A)110 (B)108(C)100 (D)120参考答案:B2. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素。

(A)64(B)63 (C)63.5 (D)7参考答案:C3.线性表采用链式存储结构时,其地址()。

(A) 必须是连续的 (B) 部分地址必须是连续的(C) 一定是不连续的 (D) 连续与否均可以参考答案:D4. 在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行()(A)s->next=p;p->next=s; (B) s->next=p->next;p->next=s;(C)s->next=p->next;p=s; (D)p->next=s;s->next=p;参考答案:B5.在一个单链表中,若删除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;参考答案:A6.下列有关线性表的叙述中,正确的是()(A)线性表中的元素之间隔是线性关系(B)线性表中至少有一个元素(C)线性表中任何一个元素有且仅有一个直接前趋(D)线性表中任何一个元素有且仅有一个直接后继参考答案:A7.线性表是具有n个()的有限序列(n≠0)(A)表元素(B)字符(C)数据元素(D)数据项参考答案:C二、判断题1.线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。

()2.如果没有提供指针类型的语言,就无法构造链式结构。

()3.线性结构的特点是只有一个结点没有前驱,只有一个结点没有后继,其余的结点只有一个前驱和后继。

第2章 线性表习题及参考答案

第2章 线性表习题及参考答案

第二章线性表习题一判断题1.线性表的逻辑顺序与存储顺序总是一致的。

2.顺序存储的线性表可以按序号随机存取。

3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。

4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。

5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。

6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。

7.线性表的链式存储结构优于顺序存储结构。

8.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。

9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。

10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。

二单选题 (请从下列A,B,C,D选项中选择一项)1.线性表是( ) 。

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

2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。

插入一个元素时平均要移动表中的()个元素。

(A) n/2 (B) n+1/2 (C) n -1/2 (D) n3.线性表采用链式存储时,其地址( ) 。

(A) 必须是连续的;(B) 部分地址必须是连续的;(C) 一定是不连续的;(D) 连续与否均可以。

4.用链表表示线性表的优点是()。

(A)便于随机存取 (B)花费的存储空间较顺序存储少(C)便于插入和删除 (D)数据元素的物理顺序与逻辑顺序相同5.某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( )存储方式最节省运算时间。

(A)单链表 (B)双链表 (C)单循环链表 (D)带头结点的双循环链表6.循环链表的主要优点是( )。

第2章 线性表习题参考答案

第2章 线性表习题参考答案

习题二参考答案一、选择题1.链式存储结构的最大优点是( D )。

A.便于随机存取B.存储密度高C.无需预分配空间D.便于进行插入和删除操作2.假设在顺序表{a0,a1,……,a n-1}中,每一个数据元素所占的存储单元的数目为4,且第0个数据元素的存储地址为100,则第7个数据元素的存储地址是( D )。

A.106B. 107C.124D.1283.在线性表中若经常要存取第i个数据元素及其前趋,则宜采用( A )存储方式。

A.顺序表B. 带头结点的单链表C.不带头结点的单链表D. 循环单链表4.在链表中若经常要删除表中最后一个结点或在最后一个结点之后插入一个新结点,则宜采用( C )存储方式。

A.顺序表B. 用头指针标识的循环单链表C. 用尾指针标识的循环单链表D. 双向链表5.在一个单链表中的p和q两个结点之间插入一个新结点,假设新结点为S,则修改链的java语句序列是( D )。

A.s.setNext(p); q.setNext(s);B. p.setNext(s.getNext()); s.setNext(p);C. q.setNext(s.getNext()); s.setNext(p);D. p.setNext(s); s.setNext(q);6.在一个含有n个结点的有序单链表中插入一个新结点,使单链表仍然保持有序的算法的时间复杂度是( C )。

A.O(1)B. O(log2n)C. O(n)D. O(n2)7.要将一个顺序表{a0,a1,……,a n-1}中第i个数据元素a i(0≤i≤n-1)删除,需要移动( B )个数据元素。

A.iB. n-i-1C. n-iD. n-i+18.在带头结点的双向循环链表中的p结点之后插入一个新结点s,其修改链的java语句序列是( D )。

A.p.setNext(s); s.setPrior(p); p.getNext().setPrior(s);s.setNext(p.getPrior());B.p.setNext(s); p.getNext().setPrior(s); s.setPrior(p);s.setNext(p.getNext());C.s.setPrior(p); s.setNext(p.getNext()); p.setNext(s);p.getNext().setPrior(s);D.s.setNext(p.getNext()); s.setPrior(p); p.getNext().setPrior(s);p.setNext(s);9.顺序表的存储密度是( B ),而单链表的存储密度是( A )。

第二章 线性表习题

第二章 线性表习题

第2章线性表1.编写一个算法,往单链表里数据为w0的结点前面插入一个给定值x的结点。

2.写出将单链表逆置的算法。

即若原单链表中存储元素的次序为a0,a1,a2,…,an-1,则单链表逆置后便为an-1,an-2,…,a1,a0。

要求就地逆置,即不再重新开辟存储空间,只通过调整指针来完成,并且使用尽可能少的附加单元。

3 简述以下算法的功能。

(1) Status A(LinkedList L) { // L 是无表头结点的单链表if (L && L->next){Q =L; L =L->next; P =L ;while ( P->next) P =P->next ;P->next =Q; Q->next = NULL;}return OK;} // A(2) void BB(LNode *s, LNode *q ) {p =s ;while (p->next!=q) p =p->next ;p->next =s;} //BBvoid AA(LNode *pa, LNode *pb) {// pa 和pb 分别指向单循环链表中的两个结点BB(pa, pb);BB(pb, pa);} //AA4 指出以下算法的错误和低效(即费时)之处,并将它改写为一个既正确又高效的算法。

Status DeleteK(SqList &a, int i, int k){//本过程从顺序存储结构的线性表a中删除第i个元素起的k个元素if(i<1 || k<0 || i+k>a.length)return INFEASIBLE; //参数不合法else{for(count=1; count<k; count++){//删除一个元素for(j=a.length; j>=i+1; j--)a.elem[j-1]= a.elem[j];a.length--;}}returnOK;}//DeleteK5 试写一算法在带表头结点的单链表结构上实现线性表操作LOCATE(L,X)。

数据结构--线性表习题及答案

数据结构--线性表习题及答案

数据结构--线性表习题及答案第⼆章线性表⼀、选择题1、若长度为n的线性表采⽤顺序存储结构,在其第i个位置插⼊⼀个新元素算法的时间复杂度()。

A. O(log2n)B.O(1)C. O(n)D.O(n2)2、若⼀个线性表中最常⽤的操作是取第i个元素和找第i个元素的前趋元素,则采⽤()存储⽅式最节省时间。

A. 顺序表B. 单链表C. 双链表D. 单循环链表3、具有线性结构的数据结构是()。

A. 图B. 树C. ⼴义表D.栈4、在⼀个长度为n的顺序表中,在第i个元素之前插⼊⼀个新元素时,需向后移动()个元素。

A. n-iB. n-i+1C. n-i-1D. i5、⾮空的循环单链表head的尾结点p满⾜()。

A. p->next==headB. p->next==NULLC. p==NULLD. p==head6、链表不具有的特点是()。

A. 可随机访问任⼀元素B. 插⼊删除不需要移动元素C. 不必事先估计存储空间D. 所需空间与线性表长度成正⽐7、在双向循环链表中,在p指针所指的结点后插⼊⼀个指针q所指向的新结点,修改指针的操作是()。

A. p->next=q;q->prior=p;p->next->prior=q;q->next=q;B. p->next=q;p->next->prior=q;q->prior=p;q->next=p->next;C. q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;D. q->next=p->next;q->prior=p;p->next=q;p->next=q;8、线性表采⽤链式存储时,结点的存储地址()。

A. 必须是连续的B. 必须是不连续的C. 连续与否均可D. 和头结点的存储地址相连续9、在⼀个长度为n的顺序表中删除第i个元素,需要向前移动()个元素。

线性表练习题(答案)

线性表练习题(答案)

第2章线性表一选择题下列程序段的时间复杂度为( C )。

for( int i=1;i<=n;i++)for( int j=1;j<= m; j++)A[i][j] = i*j ;A. O(m2)B. O(n2)C. O(m*n)D. (m+n)下面关于线性表的叙述中,错误的是哪个?(B )A.线性表采用顺序存储,必需占用一片持续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,没必要占用一片持续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

线性表是具有n个( C )的有限序列(n>0)。

A.表元素B.字符C.数据元素D.数据项若某线性表最常常利用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。

A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表某线性表中最常常利用的操作是在最后一个元素以后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表设一个链表最常常利用的操作是在末尾插入结点和删除尾结点,则选用( D )最节省时间。

A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表若某表最常常利用的操作是在最后一个结点以后插入一个结点或删除最后一个结点。

则采用( D )存储方式最节省运算时间。

A.单链表B.双链表C.单循环链表D.带头结点的双循环链表链表不具有的特点是( B )A.插入、删除不需要移动元素B.可随机访问任一元素C.没必要事前估量存储空间D.所需空间与线性长度成正比下面的叙述不正确的是(B,C )A.线性表在链式存储时,查找第i个元素的时间同i的值成正比B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( C )(1<=i<=n+1)。

数据结构第二章习题(2)

数据结构第二章习题(2)

1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:
(A)存储结构 (B)逻辑结构 (C)顺序存储结构 (D)链式存储结构
2.一个向量第一个元素的存储地址是 100,每个元素的长度为 2,则第 5 个元素的地址是
(A)110 (B)108
(C)100
(D)120
3.在 n 个结点的顺序表中,算法的时间复杂度是 O(1)的操作是: (A)访问第 i 个结点(1≤i≤n)和求第 i 个结点的直接前驱(2≤i≤n) (B)在第 i 个结点后插入一个新结点(1≤i≤n) (C)删除第 i 个结点(1≤i≤n) (D)将 n 个结点从小到大排序
五、线性表具有两种存储方式,即顺序方式和链接方式。现有一个具有五个元素的线性表
L={23,17,47,05,31},若它以链接方式存储在下列 100~119 号地址空间中,每个结点
由数据(占 2 个字节)和指针(占 2 个字节)组成,如下所示:
05 U 17 X 23 V 31 Y 47 Z
^
^
100
情况下适用于使用链式结构实现。
(A)需经常修改L中的结点值
(B)需不断对L进行删除插入
(C)L中含有大量的结点
(D)L中结点结构复杂
9.单链表的存储密度
(A)大于 1; (B)等于 1; (C)小于 1; (D)不能确定
10.设 a1、a2、a3 为 3 个结点,整数 P0,3,4 代表地址,则如下的链式存储结构称为

二、判断题
( )1. 链表的每个结点中都恰好包含一个指针。
( )2. 链表的物理存储结构具有同链表一样的顺序。
( )3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的

数据结构(线性表)习题与答案

数据结构(线性表)习题与答案

1、线性表是具有n 个______ 的有限序列。

A.数据项B.字符C.数据元素D.表元素正确答案:C2、线性表是_______。

A.一个无限序列,可以为空B.一个有限序列不可以为空C.一个无限序列,不可以为空D.一个有限序列,可以为空正确答案:D3、关于线性表的正确说法是_______。

A.每一个元素都有一个前驱和一个后继元素B.除第一个元素和最后一个元素外,其余元素有且仅有一个前驱和一个后继元素C.表中元素的排序顺序必须是由小到大或者由大到小D.线性表中至少有一个元素正确答案:B4、线性表采用链表存储时,其存放各个元素的单元地址是_______。

A.连续与否均可以B.部份地址必须是连续的C.一定是不连续的D.必须是连续的5、链表不具备的特点是_______。

A.插入删除不需要挪移元素B.所需空间与其长度成正比C.不必事先估计存储空间D.可随机访问任一节点正确答案:D6、线性表的静态链表存储结构与顺序存储结构相比,优点是_______。

A.所有的操作算法实现简单B.便于利用零散的存储器空间C.便于随机存取D.便于插入和删除正确答案:D7、线性表的顺序存储结构和链式存储结构相比,优点是_______。

A.便于随机存取B.便于插入和删除C.所有的操作算法实现简单D.节省存储空间正确答案:A 8、设线性表有n 个元素,以下操作中,_______在顺序表上实现比在链表上实现效率高。

A.交换第1 个元素第2 个元素的值B.输出与给定值x 相等的元素在线性表中的符号C.输入第i ( 1<=i<=n )个元素值D.顺序输出这n 个元素的值正确答案:C9、对于一个线性表,既要求能够较快地进行插入和删除操作,又要求存储结构能够反映数据元素之间的逻辑关系,则应采用_______ 存储结构。

A.顺序B.链式C.散列D.索引正确答案:B10、设线性表中有n 个元素,以下操作,_______ 在单链表上实现要比在顺序表上实现效率高。

《数据结构》关于线性表的练习题(PPT内含答案)

《数据结构》关于线性表的练习题(PPT内含答案)

C.插入删除时不需移动元素
D.所需空间与线性表成正比
7.在( B )的运算中,使用顺序表比链表好。
A.插入
B.根据序号查找
C.删除
D.根据元素查找
8.在单链表指针为p的结点之后插入指针为s的结点,正确 的操作是( B )。
A.p->next=s;s->next=p->next;
B.s->next=p->next;p->next=s;
9.若对一个线性表经常进行查找操作,而很少进行插入和 删除操作时,则采用 顺序 存储结构为宜,相反,若经 常进行的是插入和删除操作时,则采用 链式 存储结构 为宜。
习题2
三、判断题 1.线性表的链式存储结构优于顺序存储结构。( F ) 2.链表的每个结点都恰好包含一个指针域。 ( F ) 3.在线性表的链式存储结构中,逻辑上相邻的两个元素在
B.循环链表和单向链表
C.循环链表
15.对具有n个结点的线性表进行插入或删除操作, 所需的算法时间复杂度为( D )。
A.O(n2) C.O(log2n)
B.O(nlog2n) D.O(n)
习题2
二、填空题
1.线性表L=(a1,a2,…,an)采用顺序存储,假定删除 表中任意元素的概率相同,则删除一个元素平均 需要移动元素的个数是 (n-1)/2 。
习题2
5.链表相对于顺序表的优点是插入、删除方便;缺点是存 储密度 小 。
6.链式存储的特点是利用 指针 来表示数据元素之间的 逻辑关系。
7.在双向链表中,每个结点有两个指针域,一个指向其 前驱结点,另一个指向其 后继 结点。
8.在一个双链表中,设指针p是指向该表中待删除的结点, 则需要执行的操作为: p->pre->next=p->next 。

计算机四级考试习题练习(第2章线性表习题练习解析)

计算机四级考试习题练习(第2章线性表习题练习解析)

计算机四级考试习题练习(第2章线性表习题练习解析)2.1 试描述头指针、头结点、开始结点的区别、并说明头指针和头结点的作用。

答:开始结点是指链表中的第一个结点,也就是没有直接前趋的那个结点。

链表的头指针是一指向链表开始结点的指针,单链表由头指针唯一确定,因此单链表可以用头指针的名字来命名。

头结点是在链表的开始结点之前附加的一个结点。

有了头结点之后,头指针指向头结点,不论链表否为空,头指针总是非空。

而且头指针的设置使得对链表的第一个位置上的操作与在表其他位置上的操作一致。

2.2 何时选用顺序表、何时选用链表作为线性表的结构为宜?答:在实际应用中,应根据具体问题的要求和性质来选择顺序表或链表作为线性表的存储结构,通常有以下几方面的考虑:1.基于空间的考虑。

当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,难以估计其存储规模时,采用动态链表作为存储结构为好。

2.基于时间的考虑。

若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之,若需要对线性表进行频繁地插入或删除等的操作时,宜采用链表做存储结构。

并且,若链表的插入和删除主要发生在表的首尾两端,则采用尾指针表示的单循环链表为宜。

2.3 在顺序表中插入和删除一个结点需平均移动多少个结点?具体的移动次数取决于哪两个因素?答:在等概率情况下,顺序表中插入一个结点需平均移动n/2个结点。

删除一个结点需平均移动/2个结点。

具体的移动次数取决于顺序表的长度n以及需插入或删除的位置i。

i越接近n则所需移动的结点数越少。

2.4 为什么在单循环链表中设置尾指针比设置头指针更好?答:尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear-next-next 和rear,查找时间都是O。

《数据结构》(第三版)习题 (2)[2页]

《数据结构》(第三版)习题 (2)[2页]

习题2一.选择题1.线性表是具有n个()的有限序列(n>0)。

A. 表元素B.字符C.数据元素D.数据项2. 线性表的顺序存储结构是一种()的存储结构。

A.随机存取 B.顺序存取 C.索引存取 D.HASH 存取3. 在一个长度为n的顺序表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需向后移动()个元素。

A. n-1B. n-i+1C. n-i-1D. i4. 在一个长度为n的顺序表中,设在任何位置上的删除操作都是等概率的,删除一个元素时大约要移动表中的()个元素。

A. n+1B. n-1C. (n-1)/2D. n5.若线性表采用顺序存储结构,每个元素占用 4 个存储单元,第一个元素的存储地址为 100,则第 12 个元素的存储地址是()。

A.112 B.144 C.148 D.4126.在一个长度为 n 的顺序表的任一位置插入一个新元素的时间复杂度为()。

A. O(n)B.O(n/2)C. O(1)D.O(n2)7.在一个单链表中,已知*q结点是*p结点的前驱结点,若在*q和*p之间插入*s结点,则执行()。

A. s->next=p->next; p->next=s;B. p->next=s->next; s->next=p;C. q->next=s; s->next=p;D. p->next=s; s->next=q;8.设指针p指向单链表中某结点(数据域为m),指针f指向将要插入的新结点(数据域为x),当x插在结点m之后时,只要先修改()后修改p->next=f即可。

A. f->next=p;B. f->next=p->next;C. p->next=f->next;D. f=NULL;9.下面关于线性表的叙述错误的是()。

A.线性表采用顺序存储必须占用一片连续的存储空间B.线性表采用链式存储不必占用一片连续的存储空间C.线性表采用链式存储便于插入和删除操作的实现D.线性表采用顺序存储便于插入和删除操作的实现10.在具有n个结点的有序单链表中插入一个新结点,并使链表仍然有序的算法的时间复杂度是()。

数据结构练习题 第二章 线性表 习题及答案

数据结构练习题 第二章  线性表 习题及答案
{ p=head;j=0;
while(________________)
{ p=p->next; j++; }
if(i==j) return(p);
else return(NULL);
}
26.以下为单链表的定位运算,分析算法,请在____处填上正确的语句。
int locate_lklist(lklist head,datatype x)
if(________)return(i);
else return(0);
}
15.对于顺序表的定位算法,若以取结点值与参数X的比较为标准操作,平均时间复杂性量级为________。求表长和读表元算法的时间复杂性为________。
16.在顺序表上,求表长运算LENGTH(L)可通过输出________实现,读表元运算
36.当且仅当两个串的______相等并且各个对应位置上的字符都______时,这两个串相等。一个串中任意个连续字符组成的序列称为该串的______串,该串称为它所有子串的______串。
37.串的顺序存储有两种方法:一种是每个单元只存一个字符,称为______格式,另一种是每个单元存放多个字符,称为______格式。
2.为了满足运算的封闭性,通常允许一种逻辑结构出现不含任何结点的情况。不含任何结点的线性结构记为______或______。
3.线性结构的基本特征是:若至少含有一个结点,则除起始结点没有直接______外,其他结点有且仅有一个直接______;除终端结点没有直接______外,其它结点有且仅有一个直接______.
① 数据元素 ② 数据项 ③ 数据 ④ 数据结构
4.顺序表是线性表的 ( )
①链式存储结构 ②顺序存储结构 ③ 索引存储结构 ④ 散列存储结构

数据结构(线性表)练习题与答案2

数据结构(线性表)练习题与答案2

1、与单链表相比,双链表的优点之一是()。

A.插入、删除操作更简单B.可以进行随机访问C.可以省略表头指针或表尾指针D.访问前后相邻节点更方便正确答案:D解析:在双链表中可以访问任一节点的前后相邻节点,而单链表中只能访问任一节点的下一个节点。

2、带头节点的双链表L为空表时应满足()。

A.L==NULLB.L->prior==L->nextC.L->prior==NULLD.L->next==NULL正确答案:D3、在长度为n(n≥1)的双链表中插入一个节点(非尾节点)要修改()个指针域。

A.1B.2C.3D.4正确答案:D解析:需要修改插入节点的prior、next域,前驱节点的next域和后继节点的prior域。

4、对于长度为n(n≥1)的双链表L,在p所指节点之前插入一个新节点的算法的时间复杂度为()。

A. O(1)B. O(n)C. O(n2)D. O(nlog2n)正确答案:A解析:设新节点指针为q,操作是:p->prior->next=p; q->prior=p->prior; p->prior=q; q->next=p;5、在长度为n(n≥1)的双链表中删除一个节点(非尾节点)要修改()个指针域。

A.1B.2C.3D.4正确答案:B解析:需要修改前驱节点的next域和后继节点的prior域。

6、与非循环单链表相比,循环单链表的主要优点是()。

A.不再需要头指针B.已知某个节点的位置后,能够容易找到它的前驱节点C.在进行插入、删除操作时,能更好地保证链表不断开D.从表中任意节点出发都能扫描到整个链表正确答案:D解析:循环单链表中可以循环扫描,因此从表中任意节点出发都能扫描到整个链表。

7、设有带头节点的循环单链表L,当这种链表成为空链表时,有()。

A.表头节点指针域next为空B.L的值为NULLC.表头节点的指针域next与L的值相等D.表头节点的指针域next与L的地址相等正确答案:C解析:带头节点的循环单链表L成为空链表时满足L->next==L,即表头节点*L的指针域next与L的值相等,而不是表头节点*L的指针域next与L的地址相等。

线性代数练习题二

线性代数练习题二

一、单项选择题 1.设行列式2211b a b a =1,2211c a c a =2,则222111c b a c b a ++=( )A .-3B .-1C .1D .32.设行列式333231232221131211a a a a a a a a a =4,则行列式333231232221131211333222a a a a a a a a a =( ) A.12 B.24 C.36D.483.设3阶方阵A 的行列式为2,则12A -=( ) A.-1 B.14- C.14D.14.设行列式111213212223313233a a a a a a a a a =2,则111213313233213122322333333a a a a a a a a a a a a ------=( ) A .-6 B .-3 C .3D .65.设行列式111213212223313233a a a a a a a a a =2,则111213212223313233232323a a a a a a a a a ------=( ) A.-12B.-6C.6D.126.设A 为3阶方阵,且|A |=2,则|2A -1|=( ) A .-4 B .-1 C .1D .47.设2阶矩阵A =⎪⎪⎭⎫ ⎝⎛d c b a ,则A *=( )A .⎪⎪⎭⎫ ⎝⎛--a c b dB .⎪⎪⎭⎫ ⎝⎛--a bc dC .⎪⎪⎭⎫ ⎝⎛--a cb d D .⎪⎪⎭⎫⎝⎛--a b c d8.矩阵⎪⎪⎭⎫⎝⎛-0133的逆矩阵是( )A .⎪⎪⎭⎫⎝⎛-3310B .⎪⎪⎭⎫⎝⎛-3130C .⎪⎪⎭⎫⎝⎛-13110 D .⎪⎪⎪⎭⎫ ⎝⎛-01311 9.设A 是3阶方阵,且|A |=-21,则|A -1|=( ) A .-2 B .-21 C .21 D .2 10.设A 为n 阶方阵,λ为实数,则|λA |=( ) A .λ|A | B .|λ||A | C .λn |A | D .|λ|n |A | 11.矩阵A =⎪⎪⎭⎫⎝⎛--1111的伴随矩阵A *=( ) A .⎪⎪⎭⎫⎝⎛--1111B .⎪⎪⎭⎫⎝⎛--1111 C .⎪⎪⎭⎫ ⎝⎛--1111D .⎪⎪⎭⎫ ⎝⎛--111112.设A 为3阶方阵,且已知|-2A |=2,则|A |=( ) A .-1 B .-41 C .41 D .1 13.设矩阵A ,B ,C 为同阶方阵,则(ABC )T =( ) A .A T B T C T B .C T B T A TC .C T A T B TD .A T C T B T14.设A 为三阶方阵且,2-=A 则=A A T 3( ) A.-108 B.-12 C.12 D.10815.设A 、B 为同阶方阵,下列等式中恒正确的是( ) A.AB=BA B.()111---+=+B A B A C.B A B A +=+D.()T T TB A B A +=+16.设A 为四阶矩阵,且,2=A 则=*A ( ) A.2 B.4 C.8D.1217.设矩阵⎪⎪⎭⎫ ⎝⎛+d b a 04=⎪⎪⎭⎫⎝⎛-32c b a ,则( ) A .a=3,b=-1,c=1,d=3B .a=-1,b=3,c=1,d=3C .a=3,b=-1,c=0,d=3D .a=-1,b=3,c=0,d=318.设A 为n 阶方阵,n ≥2,则A 5-=( ) A .(-5)n AB .-5AC .5AD .5n A19.设A=⎪⎪⎭⎫ ⎝⎛4321,则*A =( )A .-4B .-2C .2D .4 20.设A ,B 为同阶可逆方阵,则下列等式中错误..的是( ) A.|AB |=|A | |B | B. (AB )-1=B -1A -1 C. (A+B )-1=A -1+B -1 D. (AB )T =B T A T 21.设A 为三阶矩阵,且|A |=2,则|(A *)-1|=( )A.41 B.1 C.2 D.422.设A 为3阶方阵,且==-||3131A A 则,( ) A .-9 B .-3 C .-1D .923.设A 、B 为n 阶方阵,满足A 2=B 2,则必有( ) A .A =BB .A = -BC .|A |=|B |D .|A |2=|B |2 24.设A ,B ,C 为同阶方阵,下面矩阵的运算中不成立...的是( ) A.(A +B )T =A T +B T B.|AB |=|A ||B | C.A (B +C )=BA +CA D.(AB )T =B T A T 25.若矩阵A 可逆,则下列等式成立的是( ) A.A =*1A AB.0=AC.2112)()(--=A AD.113)3(--=A A26.设A 为2阶矩阵,若A 3=3,则=A 2( ) A .21 B .1 C .34 D .227.设n 阶矩阵A 、B 、C 满足E ABC =,则=-1C ( ) A .AB B .BA C .11--B AD .11--A B28.已知2阶矩阵⎪⎪⎭⎫ ⎝⎛=d c b a A 的行列式1-=A ,则=-1*)(A ( )A .⎪⎪⎭⎫⎝⎛----d c b aB .⎪⎪⎭⎫⎝⎛--a c b dC .⎪⎪⎭⎫ ⎝⎛--a cb d D .⎪⎪⎭⎫ ⎝⎛d c b a29.设A ,B ,C 为同阶可逆方阵,则(ABC )-1=( )A. A -1B -1C -1B. C -1B -1A -1C. C -1A -1B -1D. A -1C -1B -130.设α1,α2,α3,α4是4维列向量,矩阵A =(α1,α2,α3,α4).如果|A |=2,则|-2A |=( ) A.-32 B.-4 C.4 D.3231.设A 为3阶矩阵,|A|=1,则|-2A T |=( ) A.-8 B.-2 C.2 D.8 32.设矩阵A=⎪⎪⎭⎫ ⎝⎛-11,B=(1,1),则AB=( )A.0B.(1,-1)C. ⎪⎪⎭⎫ ⎝⎛-11D. ⎪⎪⎭⎫ ⎝⎛--111133.设A ,B 是任意的n 阶方阵,下列命题中正确的是( ) A.222()2+=++A B A AB B B.22()()+-=-A B A B A B C.()()()()-+=+-A E A E A E A ED.222()=AB A B34.设向量组α1,α2,…,αs 线性相关,则必可推出( )A .α1,α2,…,αs 中至少有一个向量为零向量B .α1,α2,…,αs 中至少有两个向量成比例C .α1,α2,…,αs 中至少有一个向量可以表示为其余向量的线性组合D .α1,α2,…,αs 中每一个向量都可以表示为其余向量的线性组合35.设A 为m×n 矩阵,则齐次线性方程组Ax=0仅有零解的充分必要条件是( ) A .A 的列向量组线性无关 B .A 的列向量组线性相关 C .A 的行向量组线性无关 D .A 的行向量组线性相关 5.设A 为m n ⨯矩阵,方程AX=0仅有零解的充分必要条件是( ) A.A 的行向量组线性无关 B.A 的行向量组线性相关 C.A 的列向量组线性无关 D.A 的列向量组线性相关 36.已知向量组A :4321,,,αααα中432,,ααα线性相关,那么( ) A. 4321,,,αααα线性无关 B. 4321,,,αααα线性相关 C. 1α可由432,,ααα线性表示D. 43,αα线性无关37.设有向量组A :α1,α2,α3,α4,其中α1,α2,α3线性无关,则( ) A.α1,α3线性无关 B.α1,α2,α3,α4线性无关 C.α1,α2,α3,α4线性相关 D.α2,α3,α4线性相关 38.设向量,若有常数a ,b 使,则( )A .a =-1, b =-2B .a =-1, b =2C .a =1, b =-2D .a =1, b =239.设向量α=(1,-2,3)与β=(2,k ,6)正交,则数k 为( ) A.-10 B.-4 C.3D.1040.已知向量2(1,2,2,1),32(1,4,3,0),T T +=---+=--αβαβ则+αβ=( ) A .(0,-2,-1,1)TB .(-2,0,-1,1)TC .(1,-1,-2,0)TD .(2,-6,-5,-1)T 41.设A 为n 阶正交矩阵,则行列式|A 2|=( ) A .-2 B .-1 C .1 D .242.下列向量中与α=(1,1,-1)正交的向量是( ) A. 1α=(1,1,1) B. 2α=(-1,1,1) C. 3α=(1,-1,1)D. 4α=(0,1,1)43.设向量α=(4,-1,2,-2),则下列向量是单位向量的是( ) A .31α B .51α C .91α D .251α 44.设A 为m×n 矩阵,齐次线性方程组Ax =0有非零解的充分必要条件是( ) A .A 的列向量组线性相关 B .A 的列向量组线性无关 C .A 的行向量组线性相关D .A 的行向量组线性无关45.设1α,2α是Ax=b 的解,η是对应齐次方程Ax=0的解,则( ) A. η+1α是Ax =0的解 B. η+(1α-2α)是Ax=0的解 C. 1α+2α是Ax=b 的解D. 1α-2α是Ax=b 的解46.设321,,ααα是齐次线性方程组Ax =0的一个基础解系,则下列解向量组中,可以作为该方程组基础解系的是( ) A .2121,,αααα+ B .133221,,αααααα+++ C .2121,,αααα-D .133221,,αααααα---47.设A 为n m ⨯矩阵,则n 元齐次线性方程组0=Ax 有非零解的充分必要条件是( ) A .n r =)(A B .m r =)(AC .n r <)(AD .m r <)(A48.设A 是4×6矩阵,r (A )=2,则齐次线性方程组Ax =0的基础解系中所含向量的个数是( )A.1B.2C.3D.4 49.设α是非齐次线性方程组Ax =b 的解,β是其导出组Ax =0的解,则以下结论正确的是( ) A .α+β是Ax =0的解 B .α+β是Ax =b 的解 C .β-α是Ax =b 的解D .α-β是Ax =0的解_____.二、填空题1.设向量α=(6,-2,0,4),β=(-3,1,5,7),向量γ满足βγα32=+,则γ=_________________________.2.已知向量组α1,=(1,2,3),α2=(3,-1,2), α3=(2,3,k)线性相关,则数k=_________. 3.已知α1-5α2+2α3=β,其中α1=(3,4,-1),α2=(1,0,3),β=(0,2,-5),则α3=____________. 4.设向量α=(1,1,1),则它的单位化向量为_____________. 5.已知向量组α1=⎪⎪⎪⎭⎫ ⎝⎛-211,α2=⎪⎪⎪⎭⎫ ⎝⎛-121,α3=⎪⎪⎪⎭⎫⎝⎛11t 的秩为2,则数t=______________.6.已知向量α=(3,5,7,9),β=(-1,5,2,0),如果α+ξ=β,则ξ=_________.7.设向量组1α=(a ,1,1),2α=(1,-2,1), 3α=(1,1,-2)线性相关,则数a =________. 8.已知向量组T T T a ),2,3(,)2,2,2(,)3,2,1(321===ααα线性相关,则数=a ______. 9.已知3维向量=(1,-3,3),(1,0,-1)则+3=__________. 10.设向量=(1,2,3,4),则的单位化向量为__________.11.设A 是m ×n 矩阵,A x =0,只有零解,则r (A )=____________________ 12.已知行列式422221111-=-+-+b a b a b a b a ,则=2211b a b a ______.13.行列式2110的值为_________. 14.若,0211=k 则k=___________.15.已知行列式011103212=-a ,则数 a =__________.16.3阶行列式313522001=_________.17.已知3阶行列式33323123222113121196364232a a a a a a a a a =6,则333231232221131211a a a a a a a a a =_______________. 18.设3阶行列式D 3的第2列元素分别为1,-2,3,对应的代数余子式分别为-3,2,1,则D 3=__________________. 19.若==k k 则,012131012_____________。

《数据结构》第二章线性表习题及参考答案

《数据结构》第二章线性表习题及参考答案

《数据结构》第二章线性表习题一、单项选择题1. 线性表是________。

A.一个有限序列,可以为空B.一个有限序列,不可以为空C.一个无限序列,可以为空D.一个无限序列,不可以为空2. 在一个长度为n的顺序表中删除第i个元素(0<=i<=n)时,需向前移动个元素。

A.n-i B.n-i+l C.n-i-1 D.i3. 线性表采用链式存储时,其地址________。

A.必须是连续的B.一定是不连续的C.部分地址必须是连续的D.连续与否均可以4. 从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较________个元素结点。

A.n/2 B.n C.(n+1)/2 D.(n-1)/25. 在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是____。

A. p->next=s; s->prior=p;p->next->prior=s; s->next=p->next;B. s->prior=p; s->next=p->next;p->next=s; p->next->prior=s;C. p->next=s; p->next->prior=s;s->prior=p; s->next=p->next;D. s->prior=p; s->next=p->next;p->next->prior=s; p->next=s;6. 设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为________。

A.p->next=p->next->next; B.p=p->next; C.p=p->next->next; D.p->next=p;7. 在一个长度为n的顺序表中向第i个元素(0< i<n+l )之前插入一个新元素时,需向后移动______个元素。

《数据结构》习题集:第2章_线性表

《数据结构》习题集:第2章_线性表

第2章线性表一、选择题1.表长为N 的顺序表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为(E ),删除一个元素需要移动的元素个数为(A )。

A. (N-1)/2B. NC. N+1D. N-1E. N/2F. (N+1)/2G. (N-2)/22.线性表是具有N 个(C )的有限序列。

A、表元素B、字符C、数据元素D、数据项E、信息3.“线性表的逻辑顺序和物理顺序总是一致的。

”这个结论是(B )。

A、正确的B、错误的C、不一定,与具体结构有关。

4.线性表采用链式存储结构时,要求内存中可用存储单元的地址(D )。

A、必须是连续的B、部分地址必须是连续的C、一定是不连续的D、连续或不连续都可以。

5.带头结点的单链表为空的判定条件是(B )。

A、head==NULLB、head->next==NULLC、head->next==headD、head!=NULL6.不带头结点的单链表head 为空的判定条件是(A )。

A、head==NULLB、head->next==NULLC、head->next==headD、head!=NULL7.非空的循环单链表head 的尾结点P 满足( C )。

A、P->NEXT=NULLB、p=NULLC、p->next==headD、p==head8.在一个具有n 个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B )。

A、O(1)B、O(n)C、O(n2)D、O(nlog2n)9.在一个单链表中,若删除P 所指结点的后继结点,则执行( A )。

A、p->next=p->next->nextB、p=p->next;p->next=p->next->nextC、p->next=p->next;D、p=p->next->next;10.在一个单链表中,若在P所指结点之后插入S所指结点,则执行(B )。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

线性表典型例题一、单项选择题[例7-1]在数据结构中,与所使用计算机无关的数据叫( ①)结构;链表是一种采用( ②)存储结构存储的线性表;链表适用于( ③)查找;在链表中进行( ④)操作的效率比在线性表中进行该操作的效率高。

①A.存储B.物理C.逻辑D.物理和逻辑②A.顺序B.网状C.星式D.链式③A.顺序B.二分法C.顺序及二分法D.随机④A.二分法查找B.快速查找C.顺序查找D.插入解析:本题考查的是基本概念。

本题答案为:①C;②D;③A;④D。

[例7-2] 链表不具备的特点是( )。

A.插入和删除不需要移动元素B.可随机访问任一结点C.不必预分配空间D.所需空间与其长度成正比解析:线性表可随机访问任一结点,而链表必须从第一个数据结点出发逐一查找每个结点。

本题答案为:B。

[例7-3] 不带头结点的单链表head为空的判定条件是( )。

A.head==NULL B.head_>next==NULLC.head_>next==head D.head!=NULL解析:在不带头结点的单链表head中,head指向第一个数据结点。

空表即该表没有结点,head==NULL表示该单链表为空。

本题答案为:A。

[例7-4] 带头结点的单链表head为空的判定条件是( )。

A.head==NULL B.head—>next==NULLC.head—> next==head D.head!=NULL解析:在带头结点的单链表head中,head指向头结点。

空表即该表只有头结点,head —>next==NULL表示该单链表为空。

本题答案为:B。

[例7-5] 带头结点的循环单链表head中,head为空的判定条件是( )。

A.head==NULL B.head—>next==NULLC.head—> next==head D.head!=NULL解析:在带头结点的循环单链表head中,head指向头结点。

空表即该表只有头结点,head—>next==head表示该单链表为空。

本题答案为:C。

[例7-6] 线性表采用链式存储时其存储地址( )。

A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续不连续都可以解析:链式存储采用动态存储,地址一般不连续。

本题答案为:D。

[例7-7] 在双向链表的* p结点前插入新结点*s的操作为( )。

A.p—>prior=s;s—>next=p;p—>prior—>next=s;s—>prior=p—>prior;B.p—>prior=s;p—>prior—>next=s;s—>next=p;s—>prior=p—>prior;C.s—>next=p;s—>prior=p—>prior;p—>prior=s;p—>prior—>next=s;D.s—>next=p;s—>prior=p—>prior;p—>prior—>next=s;p—>prior=s;解析:在双向链表的* p结点前插入新结点* s的操作如图7.12所示,图中虚线为所作的操作,序号为操作顺序。

本题答案为:D。

图7.12 双向链表插入结点的过程示意图(例7-8)若某表最常用的操作是在最后一个结点后插入一个结点和删除第一个结点,则采用( )存储方式最节省运算时间。

A.单链表B.双向链表C.给出表头指针的循环单链表D.给出尾指针的循环单链表解析:在链表中插入或删除一个结点,需修改相邻结点的指针域。

上述四个选项中,只有选项D才能从尾指针经过最少的结点来进行题目要求的插入或删除操作。

本题答案为:D。

[例7-9] 若线性表中有2n个元素,算法( )在单链表上实现要比在顺序表上实现效率更高。

A.删除所有值为x的元素B.在最后一个元素的后面插入一个新元素C.顺序输出前k个元素D.交换其中某两个元素的值解析:对于选项A,在单链表上和顺序表上实现的时间复杂度都为O(n),但后者要移动大量的元素,因此在单链表上实现效率更高。

本题答案为:A。

(例7-10) 在长度为n的( )上,删除第一个元素,其算法复杂度为O(n)。

A.只有表头指针的不带头结点的循环单链表B.只有尾指针的不带表头结点的循环单链表C.只有表尾指针的带头结点的循环单链表D.只有尾指针的带表头结点的循环单链表解析:本题答案为:A。

具体算法如下:linklist * delfirst(linklist * h){Linklist * p=h;while(p—> next!=h) //找到表尾结点p=p—>next;p—>next=h—> next;free(h);returnp一>next;//返回头指针}二、填空题[例7-11] 在单链表中结点* p后插入结点* s的指令序列为;。

解析:在单链表中结点* p后插入结点* s,即将* p 的后继结点变为* s 的后继结点,* s 则成为* p的后继结点。

操作指令序列为:s—>next=p—>next;p—>next=s。

[例7-12]在线性表的链式存储结构中,根据每个结点所含指针的个数,链表可分为和;而根据指针的链接方式,链表又可分为和。

解析:本题答案为:单链表;多重链表;循环链表;普通链表(非循环链表)。

[例7-13] 在单链表中,要删除某一个指定的结点,必须找到该结点的 结点。

解析:由单链表的特点可知,删除某一个结点的操作是将其前驱结点的next 指针域指 向该结点的后继结点。

本题答案为:前驱。

[例7-14] 在一个长度为n 的顺序表中删除第i(0≤i ≤n 一1)个元素,需向前移动 个元素。

解析:需将第i 个元素后的元素依次前移一个位置,总共移动(n-1)-(i+1)+1个元素。

本题答案为:n-i-1。

[例7-15] 在一个具有n 个结点的单链表,在 * p 结点后插入一个新结点的时间复杂度是 ;在给定值为x 的结点后插入一个新结点的时间复杂度是 。

解析:在 * p 结点后插入一个新结点 * s 的操作是:s —> next =p —> next ;p —>next = s ;其时间复杂度为0(1)。

在给定值为x 的结点后插入一个结点,首先要找到该结点,然后再进行插入。

找到该 结点的时间复杂度为O(n),插入的时间复杂度为O(1)。

本题答案为:O(1);O(n)。

三、应用题(例7-16) 设A 是一个线性表(a 0,a 1,…,a i ,…,a n-1),采用顺序存储结构,则在等概率情况下平均每插入一个元素需要移动的元素个数是多少?若元素插在a i 和a i+1之间 (0≤i ≤n-1)的概率为1(1)/2n n n -+,则平均每插入一个元素所需要移动的元素个数是多少?解析:在等概率情况下,平均每插入一个元素需要移动的元素个数为:(012)12n n n ++++=+ 若元素插在a i 和a i+l 之间(0≤i ≤n-1)的概率为(1)/2n i n n -+,则平均每插入一个元素所需 要移动的元素个数为:10n i -=∑2222()221(1)1(1)/2(1)3n i n n n n n n n -+⎡⎤=+-++=⎣⎦++ (例7-17) 简述线性表采用顺序存储方式和链式存储方式的优缺点。

解析:顺序表的优点是可以随机访问数据元素,而且不需要额外的空间存储元素间的逻辑关系;缺点是表的大小固定,增减结点需要移动大量元素。

链表的优点是增减元素非常方便,只需要修改指针内容;缺点是只能进行顺序访问,另外在每个结点上增加指针域会造成存储空间增大。

[例7-18] 若频繁地对一个线性表进行插入和删除操作,则应采用何种存储结构来存储该线性表?为什么?解析:应采用链式结构来存储该线性表。

采用链式存储结构来存储线性表,在进行插 入和删除操作时的复杂度体现在查找插入或删除结点的前驱结点的操作上,查找过程中平 均移动指针域的次数为表长的一半;而采用顺序存储结构存储线性表,在进行插入和删除 操作时的复杂度则体现在元素的移动上,平均需移动表中的一半元素。

因为指针域的移动 操作次数比元素的移动操作次数少得多,所以应采用链式结构来存储该线性表。

(例7—19) (1)写出在双向链表中的结点 * p 前插入一个结点 *s 的语句序列。

(2)写出判断带头结点的双向循环链表L 为空表的条件。

解析:(1)s —>prior =p —>prior ;p —>prior — >next =s ;s —>next =p ;p —>prior =s ;(2)(L==L—>next)&&(L==L—>prior)[例7-20] 链表所表示的元素是否是有序的?如果有序,则有序性体现在何处?链表所表示的元素是否一定要在物理上是相邻的?有序表的有序性又如何理解?解析:链表所表示的元素是有序的,其有序性体现在逻辑有序,即指针有指向。

链表所表示的元素在物理上不一定相邻。

有序表的有序性不仅在逻辑结构上有序,而且在物理结构上也有序。

四、算法设计题(例7-21)编写一个算法,将一个带头结点的单链表逆转。

要求在原链表空间上进行逆转,即不允许构造新的链表结点;解析:从单链表的一种构造方法——头插法中可以得知,该方法构造的线性表中结点的顺序与插人次序相反。

因此我们可以将表结点从前往后逐个拆下并用头插法插人新表,所构造的单链表即为原表的逆转。

具体算法如下:linklist * reverse(1inklist * h){linklist * p,*q,*r;p=h—>next;h—>next=NULL;//构造空表while(p!=NULL){q=p;//拆下结点p=p—> next;q—>next=h—>next;//用头插法插入h—>next=q;}return h;}(例7-22) 已知一个顺序表La的元素按值非递减有序,编写一个算法将元素x插人后保持该表仍然按值非递减有序。

解析:要让插入新元素后的顺序表仍然按值非递减有序,必须把x插入到表中第一个大于等于x的元素之前。

应先在表中找到该位置,然后后移该元素,空出一个位置,再将x 插入。

具体算法如下:insert(sqlist *La,datatype x) //La为指向顺序表的指针{int i=0,j;while(i<= La—>last) //查找插入位置i{if(x<=La—>data[i])break;i++;}for(j=La—>last+1;j>i;j--) //后移所有大于等于x的元素La—>data[j]=La—>data[j-1];La—>data[i]=x;//将x插入La—>last++;//表长度加1}(例7-23)用顺序表A、B表示集合,编写算法求集合A和集合B的交集C(假设A、B 表内无重复元素)。

相关文档
最新文档