文档详情

数据结构作业题教程.doc

发布:2017-04-27约字共21页下载文档
文本预览下载声明
第二章作业 从顺序表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
显示全部
相似文档