空间数据结构上机实习报告

上传人:ji****n 文档编号:45693140 上传时间:2018-06-18 格式:DOC 页数:14 大小:86.29KB
返回 下载 相关 举报
空间数据结构上机实习报告_第1页
第1页 / 共14页
空间数据结构上机实习报告_第2页
第2页 / 共14页
空间数据结构上机实习报告_第3页
第3页 / 共14页
空间数据结构上机实习报告_第4页
第4页 / 共14页
空间数据结构上机实习报告_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《空间数据结构上机实习报告》由会员分享,可在线阅读,更多相关《空间数据结构上机实习报告(14页珍藏版)》请在金锄头文库上搜索。

1、空间数据结构空间数据结构测绘测绘 0808 级上机报告级上机报告姓名姓名 * 班级班级 * 学号学号 0708296707082967 时间时间 20092009 年年 1 1 月月 得分得分 环境与测绘学院环境与测绘学院上机练习上机练习 2 顺序表的定义与应用顺序表的定义与应用【实实验目的验目的】 熟练掌握顺序表的定义与应用,通过上机实践加深对顺序表概念的理解,训练学生利 用顺序表来解决具体应用问题的实践能力。 【实验内容实验内容】 设有两个整数类型的顺序表A(有m个元素)和B(有n个元素),其元素均从小到大 排列。试编写一个函数,将这两个顺序表合并成一个顺序表C,要求C的元素也从小到大排

2、列。 【实验要求实验要求】 1.给出顺序表的类定义。 2.实现顺序表的重要成员函数。 3.数据输入、输出界面友好,符合人们常规思维习惯。程序正确执行; 4.独立思考,认真上机。 【代码代码】 #include #include const int defaultSize=100; template class SeqList protected: T *data; int maxSize; int Last; void reSize(int newSize); public: SeqList(int sz=defaultSize); SeqList(SeqList SeqList()delet

3、edata; int Size() constreturn maxSize; int Length()constreturn Last+1; int Search(T int Locate(int i) const;T getData(int i) const; bool setData(int i,Tfriend void bubble(SeqListfriendvoid hebing(SeqList ; templateSeqList:SeqList(int sz)if(sz0)maxSize=sz;Last=-1;data=new TmaxSize;if(data=NULL)cerr S

4、eqList:SeqList(SeqList Last=L.Length()-1; data=new TmaxSize; if(data=NULL) cerr T SeqList:getData(int i) const if (iLast+1)cerr void SeqList:reSize (int newSize) if (newSize int SeqList:Search(Ti int SeqList:Locate(int i)const if(i=1 if(iLast+1) return false; for(int j=Last;j=i;j-) dataj=dataj-1; da

5、tai=x; Last+; return true; template bool SeqList:Remove(int i,T if(iLast+1)return false; x=datai-1; for(int j=i;j void SeqList:input() coutLast;Last-; if(Lastdatai; template void SeqList:output() cout SeqList SeqList:operator=(SeqList Last=L.Length()-1; data=new TmaxSize; if(data=NULL) cerr for(int

6、i=1;i for(i=1;iL.dataj+1) temp=L.dataj; L.dataj=L.dataj+1; L.dataj+1=temp; void main() SeqListLA;SeqListLB; LA.input(); LB.input(); hebing(LA,LB); SeqListLC(LA); bubble(LC); LC.output(); 【输入、输出界面效果输入、输出界面效果】【上机总结上机总结】 此次实验通过对顺序表的类定义,进行两顺序表的合并,并在合并后删除相同的元此次实验通过对顺序表的类定义,进行两顺序表的合并,并在合并后删除相同的元 素,然后对新数组进

7、行从小到大的排序。因为顺序表是基于一维数组的储存,所以可以选素,然后对新数组进行从小到大的排序。因为顺序表是基于一维数组的储存,所以可以选 择冒泡法进行排序。类代码中包含三个数据成员,多个作为外部接口的成员函数,完成顺择冒泡法进行排序。类代码中包含三个数据成员,多个作为外部接口的成员函数,完成顺 序表的搜索,定位,插入和删除等操作。运用类模板,序表的搜索,定位,插入和删除等操作。运用类模板,Seqlist 的数据成员不使用固定的类的数据成员不使用固定的类 型定义,而是用型定义,而是用 class 说明的虚拟类型名说明的虚拟类型名 T 作为变量的类型,在定义作为变量的类型,在定义 Seqlist

8、 类的对象时,类的对象时, 再用再用 C+的基本类型将对象的数据成员的类型实例化的基本类型将对象的数据成员的类型实例化。这样做的好处是可以使用同一个类这样做的好处是可以使用同一个类 来定义不同数据类型的对象,提高代码的利用率。来定义不同数据类型的对象,提高代码的利用率。上机练习上机练习 3 单链表的逆转单链表的逆转【实验目的实验目的】 掌握线性表的链接存储方式链表的结构与应用。通过上机实践加深学生对链表数 据结构的理解,并训练学生使用链表结构的初步应用能力。掌握其数据结构的构建方式, 给出链表的类定义,并实现相关成员函数。 【实验内容实验内容】 设有一个表头指针为h的单链表。试设计一个算法,通

9、过遍历一趟链表,将链表中所有 结点的链接方向逆转。要求逆转结果链表的表头指针h指向原链表的最后一个结点。 【实验要求实验要求】 1.使用链表结点类和链表类协同表示单链表。 2.通过键盘输入的方式建立单链表,并打印建立的单链表,将其逆转,并输出逆转后 的单链表。 3.数据输入、输出界面友好,程序正确执行。 4.独立思考,认真上机。 5.理解每一行代码,并可以予以解释。 【代码代码】 #include #include const int defaultsize=100;template struct linknode T data; linknode*link;linknode(linknode

10、*ptr=NULL) link=ptr; linknode(const Tlink=ptr; ; template class list public: list()first=new linknode; list(const Tlist(list list()makeEmpty(); void makeEmpty(); int length()const;linknode*gethead()constreturn first; linknode*search(T x);linknode*locate(int i); bool getdata(int i,T void setdata(int

11、i,T bool insert(int i,T bool remove(int i,T bool isEmpty()constreturn first- link=NULL?true:false; bool isFull()constreturn false; void sort(); void input(T endTag); void output(); list friendvoid nixu(list protected: linknode*first; ; templatelist:list(list linknode*scrptr=L.gethead(); linknode*des

12、tptr=first=new linknode; while(srcptr-link!=NULL) value=srcptr-link-data; destptr-link=new linknode(value); destptr=destptr-link; srcptr=srcptr-link; destptr-link=NULL; template void list:makeEmpty() linknode*q; while(first-link!=NULL) q=first-link; first-link=q-link; delete q; template int list:len

13、gth()const linknode*p=first-link; int count=0; while(p!=NULL) p=p-link;count+; return count ; template linknode*list:search(T x) linknode*current=first-link; while(current!=NULL) if(current-data=x)break;else current=current-link; return current; template linknode*list:locate(int i) if(i*current=firs

14、t; int k=0; while(current!=NULLk+; return current; template bool list:getdata(int i,T if(current=NULL)return false; else x=current-data; return ture; template void list:setdata(int i,T if(current=NULL) return; else current-data=x; template bool list:insert(int i,T if(current=NULL) return false; link

15、node*newnode=new linknode(x); if(newnode=NULL) cerrlink=curret-link; curret-link=newnode;return true; template bool list:remove(int i,T if(current=NULL|current- link=NULL)return false; linknode*del=current-link; current-link=del-link; x=del-data; delete del; return true; template void list:input(T endTag) linknode*newnode,*last;T val; makeEmpty(); cinval;last=first; while(val!=endTag) newnode=new linknode(val); if(newnode=NULL) cerrlink=newnod

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号