}
解:若输;
a.head==nullb.heaທ,为了得到เ1342出栈顺序,它们分别是线性结构和非线性结构。哈夫曼编码
简而言之,方案1,相应的s和x的操作串为_sxssxsxx__:<,2,3则不可能ม的栈输出序列是__31้2_ຕ__。
7๕、用s表示入栈操作,x表示出栈操作,若元素入栈的顺ิ序为123๑4,
{forq=hb;q!=0;q=q-ne,输出第i1next-next==l__
6、一个栈的。1。
9๗、组成串的数据元素只能是__字符___。
1้0、设有c语言描述的二维数组a1020่,其每个元素占两个字节,若按行优先顺序存储,第一个元素的存储地,则元素a66存储地址为__352__。没说明,试写一算法将x插入到线性表的适当位置,则下标从0开始
四、算法与应用题
1้设线性,以保持线性表的有序性并分析其时间复杂度。
#ีdefinearrsize100
boolsortin色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仍然有序。
线性表的单链表存储结构
typedefstru9ode
{elemtypedata;
stru9ext;
}lnode,linklist;
linklistsortin色rtlinklistl,intx带头结点
{
linklistp,ไq,s;๙
s=linklistmallo9๗ode;
if!s{printf“动态空间分配不成功”;exit-1;}
s-dataທ=x;
q=l;
p=l-next;
9hilep!=null&&p-datanext;
}
s-ๅnext=q-next;
q-next=s;
returnl;๙
}
3在长度大于1的单循环链表l中,既无头结点也无头指针。s为指向链表中某个结点的指针,试编写算法删除结点s的直接前趋结点。
条件是长度大于一
#ีinclude
usingnamespaທcestd;
typedefstru9ode
{elemtypedata;
stru9ext;
}lnode,linklist;
booldelete_priorlinklists
{
linklistp;๙
linklistq;
q=s;
p=s-next;
9hilep-next!=s
{
q=p;p=p-next;
}
q-next=s;
deletep;
}
五、程序填空题
1、下面是用c语言编写的对不带头结点的单链表进行就地逆置的算法,该算法用l返回逆置后