数据结构之线性表与栈和队列.docx
《数据结构之线性表与栈和队列.docx》由会员分享,可在线阅读,更多相关《数据结构之线性表与栈和队列.docx(9页珍藏版)》请在冰豆网上搜索。
![数据结构之线性表与栈和队列.docx](https://file1.bdocx.com/fileroot1/2023-1/8/ef99cae5-b0f6-4745-802f-6d929f76db9d/ef99cae5-b0f6-4745-802f-6d929f76db9d1.gif)
数据结构之线性表与栈和队列
一.顺序表:
1.简要写出在第i个位置插入一个新元素算法思想:
分析:
即在第i-1个元素和第i个元素之间插入
插入的步骤:
将第i个元素之后的所有元素后移;将新的元素放置在第i个位置
如图:
2.简要写出删除线性表中的第i个元素的算法思想:
分析:
即把第i个元素之后的所有元素往前移,也就是第i+1个元素覆盖掉第i个元素,之后的元素前移
如图:
有关线性表例题:
*在一个长度为n的顺序表(顺序存储的线性表)中,向第i个元素(1<=i<=n+1)之前插入一个新元素时,需后移_____个元素。
A.n-iB.n-i+1C.n-i-1D.i
答案:
B
2.链表:
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.23415B.54132C.23145D.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.A2.B3.B4.A