数据结构之线性表与栈和队列

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

一.顺序表:

1.在第i个位置插入一个新元素算法思想:

分析:即在第i-1个元素和第i个元素之间插入

插入的步骤:将第i个元素之后的所有元素后移;将新的元素放置在第i个位置

如图:

2.删除线性表中的第i个元素:

分析:即把第i个元素之后的所有元素往前移,也就是第i+1个元素覆盖掉第i个元素,之后的元素前移

如图:

有关线性表例题:

*在一个长度为n的顺序表(顺序存储的线性表)中,向第i个元素(1<=i<=n+1)之前插入一个新元素时,需后移_____个元素。

A.n-i

B.n-i+1

C.n-i-1

D.i

答案:B

二.链表:

1.线性链表:

①在第i个节点之前插入一个元素e:建立一个新的节点p,用来存储要插入数据的信息,然后找到位置i-1,判断能否找到情况。

插入过程如图:

②删除位置i处的元素:首先查找位置i,判断能否找到。删除过程为,先找到i-1处节点p,然后将节点p与位置i后的节点相连接。如图:

有关链表例题:

*将两个有序链表归并为一个新的有序链表。

分析:

通过比较,Pb->data(5)比Pa->data(4)大,Pa、P后移;然后比较:pb->data(5)比p->data(4)大,pb->data(5)比pa->data(6)小。

此时,把5插入到4和6之间,在插入之前,需先用一个指针指向5,如果没有指向,直接把5插入到4和6之间,则会找不到Lb中的其他元素。

过程如图:

2.循环链表

如图:

①:判断表尾:p->next=H

②:判断空表:H->next=H

3.双向链表:

在第i个节点插入新元素e。

首先找到第i个节点:while(p&&jnext;++j;} 插入过程如图:

三、栈和队列

例题:

1.栈的插入和删除在______进行。

A.栈顶

B.栈底

C.任意位置

D.指定位置

2.将整数1、2、3、4、5依次进栈,最后都出栈,出栈可以在任何时刻(只要栈不空)进行,则出栈序列不可能是_____。

A.23415

B.54132

C.23145

D.15432

3.在一个链队列中,若f,s分别为队首、队尾指针,则插入s所指节点的操作为______。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.S->next=r;r=s;

D.s->next=f;f=s;

4.最大容量为n的循环队列,约定队尾指针是rear,指向队尾元素的下一个位置;队头指针指向队头元素,则队满的条件是_____。

A.(rear+1)%n=front

B.rear=front

C.rear+1=front

D.(rear-1)%n=front

答案:

1.A

2.B

3.B

4.A

相关文档
最新文档