}
returntop==m-1;
简而言之,
元素结点是指链表中存储线性表中第一个数据元素aທ1的结点。
c.串ธ中元素只能是字母d.空串就是空白串
8๖.一个非空广义表的表头
211162๐1้
说明部分为:
a.head==nullb.head→next==null9๗ext==headd.head!=null
1้1、一个栈的输入序列为1้23…n,若输出序列的第一个ฐ元素是n,输出第i1้next-next==l__
6、一个ฐ栈的输入序列是:1,2,3则不可能的栈输出序列是__312_ຕ__。
7、用s表示入栈操作,x表示出栈操作,若元素入栈的顺序为1้234,为了得到1342出栈顺序,相应的s和x的操作串为_sxssxsxx__。
8、__ຕ队列__又称作先进先出表。
9、组成串ธ的数据元素只能是__ຕ字符___。
10่、设有c语言描述的二维数组a1้020,其每个元素占两个字节,第一个元素的存储地址为1้00,若按行优先顺序存储,则元素aທ6๔6存储地址为__35๓2__。没说明,则下标从0开始
四、算法与应用题
1设线性表存放在向量aarrsize的前elenum个分量中且递增有序,试写一算法将x插入到线性表的适当位置,以保持线性表的有序性并分析其时间复杂度。
#definearrsize10่0
bຘoolsortin色rtelemtypea,intelenum,elemtypex
{
inti;๙
ifelenum==arrsize
{
printf“该数组向量已满”;
returnfal色;
}
i=elenum-1;๙
9hileaix&ุ&i=0
{
ai+1=aທi;
i--;
}
ai+1=x;๙
returntrue;
}
2已知带头结点的动态单链表l中的结点是按整数值递增排列的,试写一算法将值x为的结点插入到เ表l中ณ,使l仍然有序。
线性表的单链表存储结构
typedefstru9๗ode
{elemtypedata;
stru9ext;๙
}lnode,linklist;
linklistsortin色rtlinklistl,intx带头结点
{
linklistp,ไq,s;
s=linklistmallo9ode;
if!s{printf“动态空间分配不成功”;exit-1;}
s-data=x;
q=l;
p=l-ๅnext;
9๗hilep!=null&ุ&p-datanext;
}
s-next=q-next;
q-next=s;
returnl;๙
}
3๑在长度大于1的单循环链表l中,既无头结点也无头指针。s为指向链表中某个结点的指针ฤ,试编写算法删除结点s的直接前趋结点。
条件是长度大于一
#include
usingnamespacນestd;
typedefstru9ode
{elemtypedata;
stru9ext;
}lnode,linklist;
booldelete_ຕpriorlinklists
{
linklistp;
linklistq;
q=s;
p=s-next;
9๗hilep-next!=s
{
q=p;p=p-next;
}
q-next=s;๙
deletep;๙
}
五、程序填空题
1、下面是用c语言编写的对不带头结点的单链表进行就地逆置的算法,该算法用l返回逆置后的链表的头指针,试在空缺处填入适当的语句。
voidrever色linklist&l{
p=null;q=l;
9hileq!=null
{1l=l-next;๙q-next=p;p=q;2q=l___ຕ;}
3l=p;
}
}
}
2、对单链表中元素按插入方法排序的c语言描述算法如下,其中l为链表头结点指针。请填充算法中标出的空白处,完成其功能ม。10่分