数据结构线性表习题1

合集下载

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

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

B. 单链表
C. 双链表
D. 单循环链表
3.具有线性结构的数据结构是( )。
A. 图
B. 树
C. 广义表
D. 栈
4.在一个长度为 n 的顺序表中,在第 i 个元素之前插入一个新元素时,需向后移动( )
个元素。
A. n-i
B. n-i+1
C. n-i-1
5.非空的循环单链表 head 的尾结点 p 满足( )。
A. n-i
B. n-i+1
C. n-i-1
D. i+1
10.线性表是n个( )的有限序列。
A. 表元素
B. 字符 C. 数据元素 D. 数据项
11.从表中任一结点出发,都能扫描整个表的是( )。
A. 单链表
B. 顺序表
C. 循环链表
D. 静态链表
12.在具有n个结点的单链表上查找值为x的元素时,其时间复杂度为( )。
A. q->next=s->next;s->next=p; B. s->next=p;q->next=s->next;
C. p->next=s->next;s->next=q; D. s->next=q;p->next=s->next; 24.在以下的叙述中,正确的是( )。
A. 线性表的顺序存储结构优于链表存储结构 B. 线性表的顺序存储结构适用于频繁插入/删除数据元素的情况
A. p->next=p->next->next;
B. p=p->next;p->next=p->next->next;
C. p =p->next;

数据结构习题1-3及其答案

数据结构习题1-3及其答案

1.设n为正整数,利用大"O"记号,将下列程序段的执行时间表示为n的函数。

(1) i=1; k=0;while(i<n){ k=k+10*i;i++;}(2) i=1; j=0;while(i+j<=n){if (i>j) j++;else i++;}(3)x=n; // n>1while (x>=(y+1)*(y+1))y++;第二章线性表2.1下述算法的功能是什么?LinkList Demo(LinkList L){ // L是无头结点单链表ListNode *Q,*P;if(L&&L->next){Q=L;L=L->next;P=L;while (P->next) P=P->next;P->next=Q; Q->next=NULL;}return L;}// Demo答:该算法的功能是:将开始结点摘下链接到终端结点之后成为新的终端结点,而原来的第二个结点成为新的开始结点,返回新链表的头指针。

2.9设顺序表L是一个递增有序表,试写一算法,将x插入L中,并使L仍是一个有序表。

答:因已知顺序表L是递增有序表,所以只要从顺序表终端结点(设为i位置元素)开始向前寻找到第一个小于或等于x的元素位置i后插入该位置即可。

在寻找过程中,由于大于x的元素都应放在x之后,所以可边寻找,边后移元素,当找到第一个小于或等于x的元素位置i时,该位置也空出来了。

算法如下://顺序表存储结构如题2.7void InsertIncreaseList( Seqlist *L , Datatype x ){int i;if ( L->length>=ListSize)Error(“overflow");for ( i=L -> length ; i>0 && L->data[ i-1 ] > x ; i--)L->data[ i ]=L->data[ i ] ; //比较并移动元素L->data[ i ] =x;L -> length++;}2.14已知单链表L是一个递增有序表,试写一高效算法,删除表中值大于min且小于max的结点(若表中有这样的结点),同时释放被删结点的空间,这里min和max是两个给定的参数。

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

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

数据结构练习题线性表习题及答案精品文档第二章线性表一.名词解释1.线性结构2.数据结构的顺序实现3.顺序表4.链表5.数据结构的链接实现6. 建表7.字符串8.串9.顺序串 10.链串二、填空题1.为了便于讨论,有时将含n(n>=0)个结点的线性结构表示成(a,a,……a),其中每n12个a代表一个______。

a称为______结点,a称为______结点,i称为a在线性表中的________ii1n或______。

对任意一对相邻结点a、a(1<=i<n),a称为a的直接______a称为a的直iii┼1i┼1┼i1i接______。

< bdsfid="75" p=""></n),a称为a的直接______a称为a的直iii┼1i┼1┼i1i接______。

<>2.为了满足运算的封闭性,通常允许一种逻辑结构出现不含任何结点的情况。

不含任何结点的线性结构记为______或______。

3.线性结构的基本特征是:若至少含有一个结点,则除起始结点没有直接______外,其他结点有且仅有一个直接______;除终端结点没有直接______外,其它结点有且仅有一个直接______.4.所有结点按1对1的邻接关系构成的整体就是______结构。

5.线性表的逻辑结构是______结构。

其所含结点的个数称为线性表的______,简称______.6.表长为O的线性表称为______7.线性表典型的基本运算包括:______、______、______、______、______、______等六种。

8.顺序表的特点是______。

9.顺序表的类型定义可经编译转换为机器级。

假定每个datatype 类型的变量占用k(k>=1)个内存单元,其中,b是顺序表的第一个存储结点的第一个单元的内存地址,那么,第i个结点a的存储地址为______。

数据结构_线性表练习题

数据结构_线性表练习题

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

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

(TRUE)3.顺序表的插入和删除一个数据元素,每次操作平均只有近一半的元素需要移动。

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

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

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

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

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

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

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

(FALSE )二.选择题11.线性表是()。

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

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

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

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

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

答:D14.用链表表示线性表的优点是()。

(A)便于随机存取(B)花费的存储空间较顺序存储少(C)便于插入和删除(D)数据元素的物理顺序与逻辑顺序相同答:C15.单链表中,增加一个头结点的目的是为了()。

(A)使单链表至少有一个结点(B)标识表结点中首结点的位置(C)方便运算的实现(D)说明单链表是线性表的链式存储答:C16.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省运算时间()。

数据结构习题

数据结构习题

A.找不到
B.查找时间复杂度为O(1)
C.查找时间复杂度为O(n)
D.查找结点的次数约
为n
(14)等概率情况下,在有n个结点的顺序表上做插入结点运算,需平均移动结点的数目
为( )。
A.n
B.(n-1)/2
C. n/2
D.(n+1)
/2
(15)在下列链表中不能从当前结点出发访问到其余各结点的是(
(11)L是线性表,已知LengthList(L)的值是5,经DelList(L,2)运算后,
LengthList(L)的值是( )。
A.2
B.3
C.4
D.5
(12)单链表的示意图如下:
L
ABCDΛ
指向链表Q结点的前趋的指针是(
)。
A.L
B.P
C.Q
D.R
(13)设p为指向单循环链表上某结点的指针,则*p的直接前驱( )。
结点。
(12) 在一个长度为n的顺序表中删除第i个元素,要移动
个元
素。
(13) 在一个长度为n的顺序表中,如果要在第i个元素前插入一个元素,要后移 个
元素。
(14) 在无头结点的单链表中,第一个结点的地址存放在头指针中,而其它结点的存储
地址存放在
结点的指针域中。
(15) 当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快速度
)。
A.双向链表
B.单循环链表 C.单链表
D.双向循
环链表
(16)在顺序表中,只要知道(
),就可以求出任一结点的存储地址。
A.基地址
B.结点大小
C. 向量大小
D.基地址和结点大小
(17)在双链表中做插入运算的时间复杂度为( )。

数据结构线性表答案 (1)

数据结构线性表答案 (1)

第一章线性表2.1 描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。

解:头指针是指向链表中第一个结点的指针。

首元结点是指链表中存储第一个数据元素的结点。

头结点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为了方便对链表的操作。

它可以对空表、非空表以及首元结点的操作进行统一处理。

2.2 填空题。

解:(1) 在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与元素在表中的位置有关。

(2) 顺序表中逻辑上相邻的元素的物理位置必定紧邻。

单链表中逻辑上相邻的元素的物理位置不一定紧邻。

(3) 在单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的链域的值指示。

(4) 在单链表中设置头结点的作用是插入和删除首元结点时不用进行特殊处理。

2.3 在什么情况下用顺序表比链表好?解:当线性表的数据元素在物理位置上是连续存储的时候,用顺序表比用链表好,其特点是可以进行随机存取。

2.4 对以下单链表分别执行下列各程序段,并画出结果示意图。

解:2.5 画出执行下列各行语句后各指针及链表的示意图。

L=(LinkList)malloc(sizeof(LNode)); P=L; for(i=1;i<=4;i++){P->next=(LinkList)malloc(sizeof(LNode)); P=P->next; P->data=i*2-1;}P->next=NULL;for(i=4;i>=1;i--) Ins_LinkList(L,i+1,i*2); for(i=1;i<=3;i++) Del_LinkList(L,i);解:2.6 已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。

a. 在P结点后插入S结点的语句序列是__________________。

数据结构习题

数据结构习题

图习题(三)
• 1.如图所示是一个无向网图,请分别按Prim 算法和Kruskal算法求最小生成树。
查找习题(一)
1.已知一个有序表为(12,18,24,35,47,50,62,83,90,115,134), 当折半查找值为 90 的元 素时,经过( )次比较后查找成功。 A2 B3 C4 D5 2.已知 10 个元素(54,28,16,73,62,95,60,26,43),按照依次插入 的方法生成一棵二叉排序树,查找值为 62 的结点所需比较次数为( )。 A2 B3 C4 D5 3.已知数据元素为(34,76,45,18,26,54,92,65),按照依次插入结点 的方法生成一棵二叉排序树,则该树的深度为( )。 A4 B5 C6 D7 4.按( )遍历二叉排序树得到的序列是一个有序序列。 A 前序 B 中序 C 后序 D 层次 5.在散列函数 H(k)= k mod m 中,一般来讲,m 应取( )。 A 奇数 B 偶数 C 素数 D 充分大的数
8.设链栈中结点的结构:data为数据域,next为指针域,且top是栈顶指针。若想 在链栈的栈顶插入一个由指针s所指的结点,则应执行下列( )操作。 A.s->next=top->next;top->next=s; B.top->next=s; C.s->next=top;top=top->next; D.s->next=top;top=s;
D.根据元素查找
线性表习题(二)
1.链表相对于顺序表的优点是: 插入、删除 方便。 2.顺序表中访问任意一个结点的时间复杂度均为 O(1) 。 3.在单链表中要在已知结点*P之前插入一个新结点,需找到 *P的直接前趋结点的地址,其查找的时间复杂度为 O(n) 。 4.单链表中需知道 头指针 才能遍历整个链表。 5.在一个长度为n的顺序表中删除第i个元素,要移动 n-i 个元 素。 6.在一个长度为n的顺序表中,如果要在第i个元素前插入一 个元素,要后移 n-i+1 个元素。 7.双链表中,设p是指向其中待删除的结点,则需要执行的操 作为: p->prior->next=p->next 。

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

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

数据结构(线性表)习题与答案数据结构(线性表)习题与答案1. 线性表的定义线性表是一种常用的数据结构,它由一系列元素组成,并且每个元素具有前驱和后继关系。

线性表可以通过顺序存储或链式存储来实现。

2. 线性表的实现方式2.1 顺序存储顺序存储是利用数组来实现线性表的一种方式。

数组的每个元素可以存储一个数据项,通过下标可以快速访问和操作其中的元素。

2.2 链式存储链式存储是通过节点之间的指针关联来实现线性表的一种方式。

每个节点包含数据域和指针域,指针域指向下一个节点。

3. 线性表的基本操作3.1 初始化线性表初始化线性表需要给表头节点分配内存空间,并将头节点的指针域置为空。

3.2 插入元素在线性表的某个位置插入元素,需要先找到插入位置的前一个节点,然后将新节点插入到该位置。

调整节点之间的指针关联即可完成插入操作。

3.3 删除元素删除线性表中的某个元素,需要找到待删除元素的前一个节点,然后将该节点的指针指向待删除节点的下一个节点,释放待删除节点的内存空间即可。

3.4 查找元素查找线性表中某个元素的位置,可以从表头节点开始逐个比较节点的数据域,直到找到目标元素或者遍历结束。

4. 线性表的习题与答案4.1 习题1已知线性表L中的元素按非递减顺序排列,设计一个算法,将元素x插入到L中,保持L的有序性。

解答:1) 从表头节点开始,顺序遍历节点的数据域,找到第一个大于等于x的节点的前一个节点,记为p。

2) 创建新的节点node,将x赋值给node的数据域。

3) 将node的指针域指向p的下一个节点。

4) 将p的指针域指向node。

5) 插入完成。

4.2 习题2已知线性表L中的元素按递减顺序排列,设计一个算法,删除L中所有大于x的元素。

解答:1) 从表头节点开始,顺序遍历节点的数据域,找到第一个小于等于x的节点的前一个节点,记为p。

2) 将p的指针域指向p的下一个节点,删除p的后继节点。

3) 重复执行步骤2,直到遍历结束。

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

数据结构练习题1 指导老师:***
姓名:***
学校:滨州学院
院系:信息工程学院软件技术
填空题
1.对于一个n个结点的单链表,在表头插入元素的时间复杂度为_____O(1)_____,在表尾插入元素的时间复杂度为_____O(n)_____。

2.删除非空线性链表中由q所指的链结点(其直接前驱结点由r指出)的动作时执行语句___r->link=q->link_______和______free(q)____。

结点结构为
typedef struct Node{
int value;
node * link;
}node;
3.非空线性链表中,若要在由p所指的链结点后面插入新结点q,则应执行语句____ q->link=p->link;______和_____ p->link=q;_____。

结点结构为
typedef struct Node{
int value;
node* link;
}node;
4.线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是_____(n-1)/2_____。

5.在一个长度为n的顺序表中第i个元素(1≤i≤n)之前插入一个元素时,需向后移动_____ n-i+1_____ 个元素。

6.在具有n个链结点的链表中查找一个链结点的时间复杂度为O(_______n___)。

7.线性表中的插入、删除操作,在顺序存储方式下平均移动近一半的元素,时间复杂度为_____O(n)_____;而在链式存储方式下,插入和删除操作的时间复杂度都是____O(1)______ 。

8.若某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第10个元素的存储地址为____136______。

选择题
1.对于一个带头结点的单链表,头指针为head,判定该表为空的条件是________B__。

A. head==NULL
B. head->next==NULL
C. head->next==head
D. head!=NULL
2.将长度为m的线性链表链接在长度为n的线性链表之后的过程的时间复杂度若采用大O形式表示,则应该是______B____。

A.O(m) B.O(n) C.O(m+n) D.O(m-n)
3.在包含1000个数据元素的线性表中,实现如下4个操作所需要的执行时间最长的是______A____ 。

A. 线性表采用顺序存储结构,在第10个元素后面插入一个新的元素
B. 线性表采用链式存储结构,在第10个元素后面插入一个新的元素
C. 线性表采用顺序存储结构,删除第990个元素
D. 线性表采用链式存储结构,删除p所指的链结点
4.在非空双向循环链表中由q所指的那个链结点前面插入一个由p所指的链结点的动作所对应的语句依次为:p一>rlink=q; p 一>llink=q一>llink; q一>llink=p; ____D______。

(空白处为一条赋值语句)
A. q一>rlink= p;
B. q一>llink一>rlink=p;
C. p一>rlink一>rlink= p;
D. p一>llink一>rlink=p;
5.在一个单向循环链表中,若要在p所指向的结点之后插入一个新结点,则需要相继修改____B______个指针域的值
A. 1
B. 2
C. 3
D. 4
6.在一个具有n个链结点的线性链表中查找某一个链结点,若查找成功,需要平均比较_____C_____个链结点。

A. n
B. n/2
C. (n+1)/2
D. (n-1)/2
7.给定一个具有n个元素的顺序表,建立一个有序线性链表的时间复杂度为______C____ 。

A. O(1)
B.O(n)
C. O(n2)
D. O(log2n)
8.链表不具有的特点是(_____B_____)
A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比
9.下面关于线性表的叙述中,错误的是哪一个?_B_________
A.线性表采用顺序存储,必须占用一片连续的存储单元。

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

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

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

10.下列哪一个术语与数据的存储结构无关?____D______
A. 顺序表
B. 链表
C. 散列表
D. 队列
11.设指针q指向单链表中结点A,指针p指向单链表中结点A 的后继结点B,指针s指向被插入的结点X,则在结点A和结点B插入结点X的操作序列为______B____。

A.s->next=p->next;p->next=-s;
B.q->next=s;s->next=p;
C.p->next=s->next;s->next=p;
D.p->next=s;s->next=q;
12.在一个单链表中,若p所指节点不是最后节点,在p之后插入s所指节点,则执行_____B_____
A. s->link=p; p->link=s;
B. s->link=p->link; p->link=s;
C. s->link=p->link; p=s;
D. p->link=s; s->link=p;
13.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用__D________存储方式最节省运算时间。

A. 单链表
B. 仅有头指针的单循环链表
C. 双链表
D. 仅有尾指针的单循环链表
14.对N 个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为__B________
A.N/2 B. (N+1)/2 C. N D. [(1+N)*N ]/2
15.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为(_____C_____)(1<=i<=n+1)。

A. O(0)
B. O(1)
C. O(n)
D. O(n2)
16.在一个以h 为头的单循环链表中,p 指针指向链尾的条件是______A____ 。

A. p->next = h
B. p->next = NULL
C. p->next->next = h
D. p->data = -1
算法填空题:
设lista,listb分别为两个有序链表(升序)的第1个链结点的指针,将这两个有序链表合并为一个有序链表,并设合并后的链表的第一个链结点的指针为listc.
LinkList MERGELIST(LinkList lista,LinkList listb)
{
LinkList listc,p=lista,q=listb,r;
if(lista->data<=listb->data){
listc=lista;
r=lista;
p=lista->link;
}
else{
listc=listb;
r=listb;
q=listb->link;
}
while(p!=NULL&&q!=NULL){
if(p->data<=q->data){
____r->next=p______
r=p;
______p=p->next____ }
else{
__r->next=q________
r=q;
_____q=q->next_____ }
}
r->link=_______p___?p:q;
return listc;
}。

相关文档
最新文档