华工数据结构作业已做_第1页
华工数据结构作业已做_第2页
华工数据结构作业已做_第3页
华工数据结构作业已做_第4页
华工数据结构作业已做_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2017华工数据结构作业一、程序阅读填空1. 在顺序表中第 i 个位置插入新元素 xtemplate <class Type> int SeqList<Type>:Insert (Type & x, int i) if (i<0|i>last+1|last=MaxSize-1) return 0; /插入不成功 else last+; for( _int j=MaxSize-1_;j>i;j-) _ _dataj+1=dataj_ _; datai = x; return 1; /插入成功   1. 直接选择排序的算法 te

2、mplate <class Type> void SelectSort(datalist<Type> & list) for(int i=0; i<list.CurrentSize-1; i+) _SelectExchange(list,i)_;  template <class Type> viod SelectExchange(datalist<Type> & list, const int i)int k = i; for(int j=i+1;j< list.CurrentSize;j+)if(list

3、.Vectorj.getKey()<list.Vectork.getKey() _ k=j_;/当前具有最小关键码的对象 if(k!=i) Swap(list.Vectori, list.Vectork); /交换  3、 删去链表中除表头结点外的所有其他结点template <class Type> void List<Type> : MakeEmpty ( ) ListNode<Type> *q; while (firstlink!=NULL)  _q=first->link_;  _fits

4、t->link=q->link_; /将表头结点后第一个结点从链中摘下 delete q; /释放它 last = first; /修改表尾指针 4、基于有序顺序表的折半搜索递归算法(Element为有序顺序表)template <class Type> int orderedList<Type> :BinarySearch(const Type & x, const int low, const int high)const int mid = -1; if ( low< = high )   _mid=(low+high

5、)/2_; if ( Elementmid.getKey( ) < x )  mid = BinarySearch (_x,mid+1,high_); else if ( Elementmid.getKey( ) > x ) mid = BinarySearch ( x, low, mid -1 ); return mid;  5、在顺序表中第 i 个位置插入新元素 x 。int insert(sqlist *L, datatype x, int i) int j; if (L->n=maxsize) cout<<”表满,不能插入!(

6、上溢)n”; return 1; if( i<0|i>=maxsize ) cout<<”非法插入位置!n”; return 0;for(j=L->n;j>=i;j-)L->dataj=L->dataj-1; /节点后移 L->dataj=x ; /插入xL->n+; /修改表长Return 1; /插入成功  6、直接选择排序的算法void SelectSort( list R, int n ) int i, j, k; for (i=1; i<=n-1;i+) /n-1趟排序 k=i ; for(j=i+

7、1;j<=n,j+) /在当前无序区中找键值最小的记录Rk if(Rj.key<Rk.key) k=j ;if(k!=i) R0=Ri; Ri=Rk; Rk=R0;  二、简答题1. 线性表可用顺序表或是链表存储,此两种存储表示各有哪些优缺点?答:1)顺序存储表示是将数据元素存放于一个联系的存储空间中,实现顺序存取或(按下标)直接存取。顺序存储的优缺点有:(1) 它的存储效率高,存取速度快。但它的空间大小一经定义,在程序整个运行期间不会发生改变,因此,不易扩充。(2) 由于在插入或删除是,为了保持原有次序(没有规定元素进栈顺序),平均需要移动一半(或近一半)元素

8、,修改效率不高。2)链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表存储的优缺点有:(1) 只要存储器中还有空间,就不会产生存储溢出问题。(2) 在插入和删除时不需要保存数据元素原来的物理顺序,只需要保存原来的逻辑顺序,因此不必移动数据,只需修改它们的链接指针,修改效率较高。但存取表中的数据元素时,只能循链接顺序访问,因此存取效率不高。  2. 设有一个输入数据的序列是46,25,78, 62, 12, 37, 70, 29,试画出从空树起,逐个输入各个数据而生成的二叉搜索树。 答:按顺序逐个输入:46 / 25 7

9、8 / / 12 37 62 / 29 703.用广义表的带表头结点的存储表示法表示下列集合。A = ( )B = (6, 2)C = (a,( 5, 3, x)D = (B, C, A)E = (B, D) 答:  4.上图所示为一有向图,请给出该图的下述要求:(1)给出每个顶点的入度和出度;(2)以结点3为起始结点,分别画出该图的一个深度优先生成树和一个宽度优先生成树;(3)给出该图的邻接矩阵;(4)给出该图的邻接表; 答:(1)顶点 入度 出度 1 3 0 2 2 2 3 1 2 4 1 3 5 2 1 6 2 3 (2) 深度优先生成树广度优生成树4156

10、23 125463000   ()邻接矩阵 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 1 0(4)邻接表 5. 对于如上图所示的有向图,试写出:(1) 从顶点出发进行深度优先搜索所得到的深度优先生成树;(2) 从顶点出发进行广度优先搜索所得到的广度优先生成树;答:(1)以顶点 为根的深度优生树(不唯一):  或  (3) 以顶点为根的广度优生成树: 6.已知二叉树的先序、中序和后序序列分别如下,但其中有一些已模糊不清,试构造出该二叉树。先序序列_BC_EF_中序序列BDE

11、_AG_H后序序列_DC_GH_A答:后续最后一个是A,所以A是先序的第一个得到:先序序列ABC_EF_中序序列BDE_AG_H后序序列_DC_GH_A (A) / (BDE) (G_H) 先序的第二个元素时B,所以B是A的左子树根节点,有中序B在最前,知道其他元素都在B的右子树上。所以,后序序列为(DE_)B(B_H)A ,对比已有的后序序列_DC_GH_A得后序序列为:EDCBGHFA , 中序序列为:BDECAGFH 先序序列 ABC_EF_ 中序序列BDECAGFH 后序序列EDCBGHFA 所以 (A) / (B) (F) / (C) (G) (H) / (D) (E)  

12、 7分析下列两个程序段的运行时间(时间复杂度)。void mystery (int n) int i, j, k; for (i =1; i < n; i+) for (j = i+1; j <= n; j+) for (k = 1; k<= j; k+); 答:O(n3)void odd (int n) int i, j, x = 0, y = 0; for (i =1; i <= n; i+) if odd(i) for(j = i; j <= n; j+) x+; for( j = 1; j <= i; j+) y+; 答:O(n2

13、) 8.有一组数据:25,50,70,21,4,18,100,43,7,12。现采用汽泡排序算法进行排序,写出每趟排序的结果,并标明第一趟数据的移动情况。答:第一趟:25, 50 ,70 ,21, 4, 18, 100, 43, 7, 1225, 50, 70, 21, 4, 18, 100, 43, 7, 12 25, 50, 21, 70, 4, 18, 100, 43, 7 ,1225, 50, 21, 4, 70, 18, 100, 43, 7, 12 25, 50, 21, 4, 18, 70, 100, 43, 7, 12 25, 50, 21, 4, 18, 70, 100, 43, 7, 12 25, 50, 21, 4, 18, 70, 43, 100, 7, 12 25, 50, 21, 4, 18, 70, 43, 7, 100, 1225, 50, 21, 4, 18, 70, 43, 7, 12, 100第二趟:25, 21, 4, 18, 50, 43, 7, 12,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论