线性结构总结.docx

上传人:b****5 文档编号:4362506 上传时间:2022-11-30 格式:DOCX 页数:12 大小:21.79KB
下载 相关 举报
线性结构总结.docx_第1页
第1页 / 共12页
线性结构总结.docx_第2页
第2页 / 共12页
线性结构总结.docx_第3页
第3页 / 共12页
线性结构总结.docx_第4页
第4页 / 共12页
线性结构总结.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

线性结构总结.docx

《线性结构总结.docx》由会员分享,可在线阅读,更多相关《线性结构总结.docx(12页珍藏版)》请在冰豆网上搜索。

线性结构总结.docx

线性结构总结

一、线性表1

1.特点1

2.顺序表1

3.链表2

二、栈3

1.栈的特点3

2.顺序栈4

3.链栈4

三、队列5

1.队列的特点5

2.顺序队列5

3.链队列6

线性表栈队列7

一、线性表

1.特点

●有且仅有一个开始结点a1(无直接前趋);

●有且仅有一个终端结点an(无直接后继);

●其余的结点ai都有且仅有一个直接前趋ai-1和一个直接后继ai+1。

●ai是属于某个数据对象的元素,它可以是一个数字、一个字母或一个记录。

2.顺序表

1)顺序表的定义

#definemaxlen100

Typedefstruct{

elementtypedata[maxlen];

intlast;

}seqlist;

●逻辑位置相邻,其物理位置也相邻

●第i个数据元素的存储位置为:

LOC(ai)=LOC(a1)+(i-1)*L

2)顺序表的特点

●为线性表提供的空间必须是连续的;

●元素的逻辑次序与物理次序是一致的;

●每个结点和其后继存放在相隔一定距离的位置上;

●内存地址可以用一个简单直观的公式表示;

●两个相邻元素间不能有空闲位置;

●存取表中任何一个结点所使用的时间是相同的。

3)顺序表的基本运算

●插入运算

i.插入前考虑的空间问题

ii.插入位置合法性考虑

iii.移动元素的顺序

iv.插入后元素个数变化

v.平均移动元素个数

●删除运算

vi.删除前考虑的空间问题

vii.删除位置合法性考虑

viii.移动元素的顺序

ix.删除后元素个数的变化

x.平均移动元素个数

●查找运算

xi.查找方法

xii.序列号和下标号的关系

●顺序表长度计算方法

4)顺序表的优缺点

●优点

xiii.无需为表示结点间的逻辑关系而增加额外的存储空间

xiv.可以方便地随机存储表中的任一结点

●缺点

xv.插入和删除平均须移动一半结点

xvi.存储分配只能预先进行(静态),过大浪费空间,过小容易溢出

3.链表

1)链表的定义

structnode{

datatypedata;

structnode*next;

};

node*p,*q;/*指针类型说明*/

●用一组任意的存储单元(可以是无序的)存放线性表的数据元素。

●无序--可零散地分布在内存中的任何位置上。

2)链表的特点

●链表中结点的逻辑次序和物理次序不一定相同。

即:

逻辑上相邻未必在物理上相邻。

●结点间的相对位置由链表中的指针域指示,结点在存储器中的存储位置是随意的。

3)链表的基本运算

●结点P的数据域赋值

●指针变量P顺链向后移动一个结点位置

●在结点P之后插入新结点S

●删除结点P之后的结点

●单链表判断表尾

●单链表长度求取

●在表首插入结点S

●在表尾插入结点S

●循环链表求取表尾结点

●双向链表中在结点P后插入结点S

●双向链表中删除结点P

4)链表的优缺点

●优点

xvii.空间不必要连续,插入和删除不需要通过移动结点来完成

xviii.空间不需要事先估计,一般不会有溢出问题

●缺点

xix.计算长度困难

xx.访问结点所需要的时间受链表长度影响

二、栈

1.栈的特点

●栈顶(TOP)---允许插入和删除的一端。

●栈底(bottom)---不允许插入和删除的一端。

●进栈---最先插入的元素放在栈的底部。

●退栈---最后插入的元素最先退栈。

●栈--又称为后进先出线性表(LIFO表,LastInFirstOut)

2.顺序栈

1)顺序栈的定义

typedefstruct{

elementtypedata[maxsize];

inttop;

}seqstack;

2)顺序栈的特点

●第一个入栈的元素放在数组下标为0的位置

●入栈和出栈都发生在最大下标处

3)顺序栈的基本运算

●如何判断栈空

●如何判断栈满

●进栈操作

●出栈操作

●求取栈中元素个数

4)顺序栈的优缺点

●优点

i.插入和删除操作不需要移动结点

ii.栈中元素个数确定容易

●缺点

i.空间大小在最初不容易确定

3.链栈

1)链栈的定义

typedefstruct

{elementtypedata;

structseqstack*next;

}seqstack;

2)链栈的特点

●使用不带头结点的单链表

●入栈操作发生在链栈的表头

●出栈操作相当于删除表头第一个结点

3)链栈的基本运算

●如何判断栈空

●进栈操作

●出栈操作

●求取栈中元素个数

4)链栈的优缺点

●优点

i.不受空间大小限定

●缺点

i.计算长度困难

三、队列

1.队列的特点

●队头(front):

允许删除(出队)的一端

●队尾(Rear):

允许插入的一端

●空队列:

队列中没有元素

●进队:

队的插入运算,即插入新的队尾元素

●出队:

队的删除运算,删除队首元素

●只允许在表的一端进行插入,而在表的另一端进行删除,是一种先入先出的线性表(FIFO)

2.顺序队列

1)顺序队列的定义

typedefstruct{

datatypedata[maxsize];

intfront,rear;/*队首、队尾*/

}linkqueue;

2)顺序队列的特点

●入队发生在最大下标处,出队发生在最小下标处,会出现假溢出问题

●解决假溢出的办法

●入队和出队仍然需要考虑溢出问题

3)顺序队列的基本运算

●如何判断队列空

●如何判断队列满

●入队操作

●出队操作

●求取队中元素个数

4)顺序队列的优缺点

●优点

ii.动态操作容易

●缺点

ii.空间确定不容易

3.链队列

1)链队列的定义

TypedefstructNode{

elementtypedata;

structNode*next;

}Qnode;//定义链队列的结点

Typedefstruct{

Qnode*front,*rear;

}Lqueue;//定义指向链队列的指针

2)链队列的特点

●使用带头结点的单链表

●入队操作为链表的尾插

●出队操作相当于删除第一个结点

3)链队列的基本运算

●如何判断队列空

●入队操作

●出队操作

●求取队中元素个数

4)链队列的优缺点

●优点

iii.不受空间大小限定

●缺点

iii.计算长度困难

线性表栈队列

一、选择题

1.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是:

()

(A)110(B)108(C)100(D)120

2.已知一个顺序存储的线性表,设每个结点需要占m个存储单元,若第一个结点的地址为da,则第i个结点的地址为:

()

A)da+(i-1)*mB)da+i*mC)da-i*mD)da+(i+1)*m

3.链表是一种采用()存储结构存储的线性表。

(A)顺序(B)链式(C)星式(D)网状

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

()

(A)必须是连续的(B)部分地址必须是连续的

(C)一定是不连续的(D)连续或不连续都可以

5.线性表L在()情况下适用于使用链式结构实现。

(A)需经常修改L中的结点值(B)需不断对L进行删除插入

(C)L中含有大量的结点(D)L中结点结构复杂

6.在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为(  )

A.n-i+1       B.n-i C.i           D.i-1

7.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行()。

(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;

8.在循环链表中first为指向链表表头的指针,current为链表当前指针,在循环链表中检测current是否达到链表表尾的语句是()。

(A)current->link=NULL(B)first->link=current

(C)first=current(D)current->link=first

9.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较()个结点。

A.nB.n/2C.(n-1)/2D.(n+1)/2

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

A.便于随机存取         B.花费的存储空间比顺序表少

C.便于插入与删除      D.数据元素的物理顺序与逻辑顺序相同

11.线性表的链接实现有利于(  )运算。

A、插入  b、读表元   c、查找  d、定位

12.线性表采用链式存储时,其地址()。

A 必须是连续的          B 部分地址是连续的

C 一定是不连续的        D 连续与否均可以

13.设单链表中指针p指着结点a,若要删除a之后的结点(若存在),则需要修改指针的操作为( )。

A、p->next=p->next->next        b、p=p->next

C、p=p->next->next      d、p->next=p

14.以下数据结构中不属于线性数据结构的是()

A队列B线性表C二叉树D栈

15.下列叙述中正确的是()。

A.线性表是线性结构B.栈与队列是非线性结构

C.线性链表是非线性结构D.二叉树是线性结构

16.在单链表中,增加头结点的目的是(A)。

A.方便运算的实现B.使单链表至少有一个结点

C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现

17.线性表的顺序存储结构和线性表的链式存储结构分别是()。

A.顺序存取的存储结构、顺序存取的存储结构

B.随机存取的存储结构、顺序存取的存储结构

C.随机存取的存储结构、随机存取的存储结构

D.任意存取的存储结构、任意存取的存储结构

18.线性表中正确的说法是()。

A.每个元素都有一个直接前驱和一个直接后继

B.线性表至少要求一个元素

C.表中的元素必须按由小到大或由大到小排序

D.除了第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继

19.线性表是具有n个()的有限序列。

A.表元素B.字符C.数据元素D.数据项

20.某线性表最常用的运算是插入和删除,插入运算是指在表尾插入一个新元素,删除运算是指删除表头第一个元素,那么采用()存储方式最节省运算时间。

A.仅有尾指针的单向循环链表B.仅有头指针的单向循环链表

C.单向链表D.双向链表

21.()又称为FIFO表。

A.队列B.散列表C.栈D.哈希表

22.设依次进入一个栈的元素序列为c,a,b,d,不可得到出栈的元素序列有()。

A.a.b,c,dB.a,d,c,bC.b,a,d,cD.c,d,a,b

23.链式栈与顺序栈相比,一个比较明显的优点是()。

    A.插入操作更加方便           B.通常不会出现栈满的情况

C.不会出现栈空的情况        D.删除操作更加方便

24.在一个顺序存储的循环队列中,队头指针指向队头元素的( )。

    A.前一个位置          B.后一个位置

C.队头元素位置       D.队尾元素的前一位置

25.若一个栈的输入序列是1,2,3……n,则输出序列的第一个元素是n,则第i个输出元素是()。

A n-i          B i           C n-i+1        D n-i-1

26.栈的数组表示中,top为栈顶指针,栈空的条件是()。

(A)top=0(B)top=maxSize(C)top=maxSize(D)top=-1

27.在数组表示的循环队列中,front、rear分别为队列的头、尾指针,maxSize为数组的最大长度,队满的条件是()。

(A)front=maxSize(B)(rear+1)%maxSize=front

(C)rear=maxSize(D)rear=front

28.栈和队列的共同特点是()。

(A)都是先进后出(B)都是先进先出

(C)只允许在端点处插入和删除(D)没有共同点

29.若非空队列采用链式存储结构,front和rear分别为队头元素与队列尾元素的指针,删除此时队列的一个元素的操作时依次执行p←front,(),callRET(P)。

A.front←link(rear)B.rear←link(p)C.rear←link(front)D.front←link(p)

30.数组data[m]为循环队列的存储空间,front为队头指针,rare为队尾指针,则执行入队的操作为()。

Arare=rare+1Brare=(rare+1)%(m-1)

Crare=(rare-1)%mDrare=(rare+1)%m

31.将递归算法转换成对应的非递归算法时,通常需要使用()。

(a)栈(b)队列 (c)链表(d)数组

32.下列关于栈的叙述中正确的是()。

A.在栈中只能插入数据B.在栈中只能删除数据

C.栈是先进先出的线性表D.栈是先进后出的线性表

33.下列关于队列的叙述中正确的是()。

A.在队列中只能插入数据B.在队列中只能删除数据

C.队列是先进先出的线性表D.队列是先进后出的线性表

34.栈和队列的共同点是()。

A.都是先进后出B.都是先进先出

C.只允许在端点处插入和删除元素D.没有共同点

35.初始为空的堆栈中依次插入元素f、e、d、c、b、a以后,连续进行了三次删除操作,此时的栈顶元素是(  )。

A.cB.dC.bD.e

36.循环单链表表示队列,正确的说法是(  )。

A.可设一个头指针使入队、出队都方便

B.可设一个尾指针使入队、出队都方便

C.必须设头、尾指针才能使入队、出队都方便

D.无论如何,只可能使入队方便

37.在一个单链表中,若q所指结点是p所指结点的前驱结点,若在q与p之间插入一个s所指的结点,则执行(  )。

A.s->link=p->link;p->link=s;B.p->link=s;s->link=q;

C.p->link=s->link;s->link=p;D.q->link=s;s->link=p;

二、填空题

1.线性表中____________________________称为表的长度。

2.循环链表的主要优点是 从任何一个结点出发可以遍历所有结点 。

3.在一个单链表中删除p所指结点的下一个结点时,应执行以下操作:

q=p->link;

p->link=______

Deleteq

4.顺序存储方法是把逻辑上相邻的结点存储在物理位置________的存储单元中。

5.已知L是无头结点的单链表,且P结点既不是首元素结点,也不是尾元素结点,添加合适的语句。

1)P结点之后插入结点S:

S->next=P->next;P->next=S;

2)P结点之前插入结点S:

pre=L;

while(pre->next!

=P)pre=pre->next;

S->next=P;pre->next=S;

3)在表首插入结点S:

S->next=L;L=S;

4)在表尾插入结点S:

while(P->next)P=P->next;

P->next=S;S->next=NULL;

6.栈中元素的进出原则为_____________________。

7.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取出数据打印。

该缓冲区应该是一个结构,其主要特点是。

8.在具有n个单元的循环队列中,队满时共有_______个元素。

9.操作系统中先来先服务是_________数据结构应用的典型例子。

10.已知链栈的结点结构包括数据域(data)和指向下一个结点的指针域(next),栈顶指针为top,则实现将指针p所指结点插入栈顶的语句依次为:

1)p->next=top;2)top=p;

三、判断题

1.线性链表中各个链结点之间的地址不一定要连续。

(R)

2.若频繁地对线性表进行插入和删除操作,该线性表采用顺序存储结构更合适。

(W)

3.若线性表采用顺序存储结构,每个数据元素占用4个存储单元,第12个数据元素的存储地址为144,则第1个数据元素的存储地址是101。

(W)

4.若长度为n的线性表采用顺序存储结构,删除表的第i个元素之前需要移动表中n-i+1个元素。

(W)

5.在顺序表中取出第i个元素所花费的时间与i成正比。

(W)

6.若某堆栈的输入序列为1,2,3,4,则4,3,1,2不可能是堆栈的输出序列之一。

(R)

7.删除非空链式存储结构的堆栈(设栈顶指针为top)的一个元素的过程是依次执行:

p←top,top←link(p),callRET(p)。

(R)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1