数据结构作业题教程.doc
文本预览下载声明
第二章作业
从顺序表la中删除自第i个元素起共k个元素。
顺序表va中数据元素递减有序,将x插入到va中,保持其有序性。
返回单链表la中和元素x相等的序号,不存在该元素返回0值。
单链表就地逆置。
la,lb为两个带头结点的单链表的头指针,从la中删除自第i个元素起共len个元素后,将他们插入表lb的第j个元素前。
答案:
1.
status dele (splist la,int i,int k)
{
if (i1||k0||i+k-1la.length)return error;
for(j=i+k-1;j=la.length-1;j++)
la.elem[j-k]=la.elem[j];
la.length=la.length-k;
return ok;
}
2.
status insert (sqlist va,elemtype x)
{
if(va.length=va.listsize)
{
newbase=(elemtype*)realloc(va.elem,(va.listsize+listincrement)*sizeof (elemtype));
if(!newbase)exit(overflow);
va.elem=newbase;
va.listsize+=listincrement;
}
i=0;
while (i=va.length-1 xva.elem[i])i++;
for(j=va.length-1;j=i;j--)va.elem[j+1]=va.elem[j];
va.elem[i]=x;
va.length++;
return ok;
}
3.
int locate (linklist la,elemtype x)
{
p=la-next;
j=1;
while(pp-data!=x)
{p=p-next;j++;}
if(!p)return (0);
else return(j);
}
4.
zizhu (linklist L)
{
P=L-next;q=p-next;L-next=Null;
while (p)
{p-next=L-next;L-next=p;p=q;q=q-next;}
}
5.
status deleteinsert (linklist la,linklist lb,int i,int len,int j)
{
pre=la-next;k=1;
while (preki-1){pre=pre-next;k++;}
if(!pre||ki-1)return error;
p=pre-next;q=p;k=1;
while(qklen){q=q-next;k++;}
if(!q||klen)return error;
pre-next=q-next;
s=la-next;k=1;
while(s||kj-1){s=s-next;k++;}
if(!s||kj-1)return error;
q-next=s-next;s-next=p;
}
第三章作业
若入栈序列为1,2,3,4则不可能得到的出栈序列是
A 4,3,2,1 B 3,1,2,4 C 2,3,4,1 D 3,4,2,1
简述下列算法的功能(栈的元素类型selemtype为int)
status algo (stack s)
{
int i,n,A[255],n=0;
while (!stackempty(s)){n++;pop(s,A[n]);}
for(i=1;j=n;i++)push(s,A[i]);
}
简述队列个栈这两种数据类型的相同点和不同点
对栈来说,表尾端叫做_______,表头端称为_______。栈又叫做_________线性表。
对于一个循环队列,判定队列为空的条件是________为满的条件是_________其列队的长度等于________。
答案
B
利用数组A将栈S中的元素逆置
略,相同点:都是操作受限的线性表,不同点:1)栈:后进先出,只能在栈顶插入删除。2)先进先出,队头删除,队尾插入。
栈顶;栈底;后进先出(LIFO)
Q.rear=Q.front; (Q.rear+1)%maxsize=Q.front; (Q.rear-Q.front+maxsize)%maxsize
第六章作业
已知一棵含有n个结点的树中,只有度为k的分支结点和度为0的叶子结点,求该树含有的叶子结点的数目。
如图所示的二叉树,若使用顺序存储结构,其正确的结构为( )
AC
B B
D
C
F
E
A:ABDCFEB:ABD0C0F00EC:ABD0C0F0ED
显示全部