《数据结构作业(共7页).doc》由会员分享,可在线阅读,更多相关《数据结构作业(共7页).doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数据结构作业:1 简述下列术语:线性表,顺序表,链表。线性表:注意常用且最简单的一种数据结构。一个线性表示n个数据元素的有限序列。顺序表:是指用一组连续的存储单元一次存储线性表中的数据元素。链表:逻辑结构相邻的数据元素物理结构不一定相邻。采用指针的形式连接起来。2 何时选用顺序表,何时选用链表作为线性表的存储结构合适?各自的主要优缺点是什么?不需要经常大量的修改表或需要随机存取的情况下可以选用顺序表;相反需要经常大量的修改表,但不是频繁的随机的存取的情况下可选用链式表。3 在顺序表中插入和删除一个结点平均需要移动多少个结点?具体的移动次数取决于哪两个因素?平均需要移动
2、n/2个结点。具体的移动次数取决于表的长度和要插入的位置4 链表所表示的元素是否有序?如有序,则有序性体现于何处?链表所表示的元素是否一定要在物理上是相邻的?有序表的有序性又如何理解?有序。有序性体现在通过指针数据元素有序的相连。物理上下一定要相邻。5 设顺序表L是递增有序表,试写一算法,将x插入到L中并使L仍是递增有序表 。Status ListInsert(SqList&L,int i,ElemTypee)If(iL.length+1|i=L.listsize)Newbase=(ElemType*)realloc(L.listsize=LISTINCRMENT)*sizeof(ElemTy
3、pe);If(!mewbase)exit(-1);Lelem=newbase;Listsize+=LISTINCREMENT;ElemType *q,*p;q=&Lelemi-1;for(p=&L.elemL.length-1;p=q;p-)*(p+1)=*p;*q=e;L.length+;return OK; 6 写一求单链表的结点数目ListLength(L)的算法。Int ListLength(L)int i=0;ElemType*p;p=&L;if(!p)exit(-1);if(p.next=NULL)return 0;elsewhile(p.next!=NULL)p+;i+;retu
4、rn i;7 写一算法将单链表中值重复的结点删除,使所得的结果链表中所有结点的值均不相同。void DeletElem(SqList L)ElemType *p,*q,*s;int i=1;int j;p=&L.next.next;for(i;iL.length;i+)q=&L.next;for(j=1;jdata=p-data)p.next=(p-1).next;s=p; p+;free(s);if(ji)P+;8 写一算法从一给定的向量A删除值在x到y(xy)之间的所有元素(注意:x和y是给定的参数,可以和表中的元素相同,也可以不同)。 void DeletElem(SqList L,in
5、t x,int y) ElemType *p,*q;int i=0;int j;p=&L.next;for(i;i=x|p.data=y)q=p;(p-1).next=p.next; p+;free(q);elsep+;9 设A和B是两个按元素值递增有序的单链表,写一算法将A和B归并为按按元素值递减有序的单链表C,试分析算法的时间复杂度。void ListInsert(Sqlist A,SqList B, SqList C)ElemType *p,*q,*s;p=&A;q=&C;s=&C;while(p.next!=NULL| q.next!=NULL)if(p.next.data= q.next.data)if(s.next!=NULL) p.next=s.next;s.next=p.next;P+;elseif(s.next!=NULL) q.next=s.next;s.next=q.next;q+; while(p.next!=NULL)p.next=s.next;s.next=p.next;while(q.next!=NULL)q.next=s.next;s.next=q.next;时间复杂度:length(A)+length(B). 专心-专注-专业