数据结构之线性表与栈和队列
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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