1、x=x y=y z=zendl; ;class TBall:public TPoint double r; TBall(double a):TPoint()r=a; TBall(double b,double c,double d,double e):TPoint(b,c,d)r=e; double Area()return 4*PI*r*r; double Volume()return 4*PI*r*r*r/3; void Show(); void input();void TBall:Show() cout球的球心坐标为:(,)球的体积为:Volume()球的表面积为:Area()void
2、 main() TBall B1(1,2,3,4); TBall B2(4); B1.Show(); B2.Show();【实现界面】【实践体会】三维空间球的程序代码我原本是仅由原有代码稍加修改后得到的,但在执行时,输出的数据出现了错误,球的面积和体积计算出的结果出现了负数,所以我对原有的程序代码进行了简化和修改,重新进行了编辑。链表的建立、合并、逆转和拆分【实验目的】本例给出了较完整的顺序表的抽象数据类型定义,通过 C+类模板的应用体现了数据抽象原理。【问题描述】定义一个链表存储的线性表,除已给出的表元素插入、删除、查找等基本操作外,再提供表的合并、拆分和逆置等操作。在应用程序中建立两个整型
3、的单链表对象 A和 B,应用线性表的基本操作对表的实例对象进行操作测试。【数据结构】定义一个链表结点类 LinkNode 和一个线性链表类 List,提供表元素的插入、删除、查找和以下操作。1. 设线性链表 A=(a1,a2,am),,B=(b1,b2,bm),按下列规则合并 A,B 为线性表 C的算法,即使得 C = (a1,b1,am,bm, b (m+1),bn) 当 mn C 表利用 A表和 B 表中的结点空间构成。2. 将 C 表原地逆置。3. 将 C 表的中偶数和奇数分别链接为两个循环链表 D和 E。【主要功能】可以输入一个单链表,实现单链表的合并、拆分和逆置等操作,且每次结果均可
4、输出。stdlib.htemplatestruct LinkNode T data; LinkNode *link; LinkNode(LinkNode *ptr=NULL) link=ptr; LinkNode(const T& item,LinkNode*ptr=NULL) data=item; link=ptr; class List public: List()h= new LinkNode; List(const T& x)h= new LinkNode(x); List(List &L); List()makeEmpty(); void makeEmpty(); int Lengt
5、h()const; LinkNodelink=NULL?true:false; bool IsFull()constreturn false; void reverse(); void input(T endTag); void output(); List& operator=(List L); protected: *h;ListList(List L) T value; *srcptr= L.getHead(); *desptr=h=new LinkNodelink!=NULL) value=srcptr-link-data; desptr-link=new LinkNodelink;
6、srcptr=srcptr- desptr-link=NULL;void List q=h- h-link=q- delete q;int List int count=0; while(p! p=p-count+; return count;LinkNode *List while(current! if(current-data=x)break; else current=current- return current;Locate(int i) if(i0) return NULL; *current=h; int k=0;=NULL&kk+; return current;bool L
7、istreturn ture;setData(int i,T &x)=0) return; if(current=NULL) return; else current-data=x;Insert(int i,T & *newNode=new LinkNode if(newNode=NULL) cerrlink=current- current-link=newNode; return true;Remove(int i,T & *current=Locate(i-1); if(current =NULL|current-link=NULL) return false; *del =curren
8、t-link=del- x=del- delete del;output()* current=h- coutdataoperator=(Listval; last=h; while(val!=endTag) newNode= new LinkNode(val); if(newNode=NULL) cerr last=newNode; cin last-reverse() *last,*led,*q; last=h- led=h- while(last- last=last- while(last!=led) q=led; led=led-link=led; q-link=last-link=
9、q;void Union(ListA,List *q=destptr- if(mn) while(q! destptr- q-link=p- p- p=p- q=destptr- else for(int i=1;im;i+)void Split(List int value; List value=led- if(value%2=0) scrptr- scrptr=scrptr- else if(value%2=1) destptr=destptr- scrptr- destptr-原链表拆分成D、E两个链表D表元素全为偶数,依次是: D.output();E表元素全为奇数,依次是: E.o
10、utput(); A; B; A.input(0); B.input(0); Union(A,B); C(A);两链表合成后,单链表的元素依次是: C.output(); C.reverse();链表逆转后的元素依次是: Split(C);程序的代码在编辑时,在链表的合并和拆分上,程序的逻辑结构我没有分析明了,开始设计代码时没有成功,之后参考了同学的算法设计才编出代码,同时在主函数的编辑时,有关函数的调用我还是不很清楚,也是询问同学后编译出的。中缀转后缀【实验目的】中缀转后缀问题可借助栈来处理。本实验题有助于掌握栈的应用技术。【问题描述】表达式转换。输入的中缀表达式为字符串,转换得到的后缀表达
11、式存入字符数组中并输出。例如: a*(x+y)/(b-x) 转换后得: a x y + * b x - /【数据结构】定义一个暂时存放运算符的转换工作栈opst。中缀表达式字符串char *infix;后缀表达式字符串char *postfix;【主要功能】输入一个中缀表达式,输出的是该算法的后缀表达式。assert.hconst int stackIncreament=20;class Opst Opst(int sz=50); Opst()deleteelements; void Push(const T& bool Pop(T& bool getTop(T& bool IsEmpty()
12、constreturn(top=-1)? bool IsFull()constreturn(top=maxSize-1)? int getSize()constreturn top+1; void makeEmpty()top=-1; friend ostream& operator (ostream& os,Opst s); private: T *elements; int top; int maxSize; void overflowProcess();OpstOpst(int sz):top(-1),maxSize(sz) elements= new TmaxSize; assert(
13、elements!=NULL);void OpstoverflowProcess()*newArray=new TmaxSize+stackIncreament; if(newArray=NULL)cerr存贮分配失败! for(int i=0;=top;i+) newArrayi=elementsi; maxSize=maxSize+stackIncreament; deleteelements; elements=newArray;Push(const T& x) if(IsFull()=true)overflowProcess(); elements+top=x;bool OpstPop
14、(T& if(IsEmpty()=true)return false; x=elementstop-;getTop(T& if(IsEmpty()=true)return false; x=elementstop;template ostream& operator s) ostop=s.top=s.top; oss.elementsi return os;int isdigit(char ch) switch(ch) case+case-*/() return 0; break; default: return 1;break;int isp(char ch)# return 0; return 5;% return 3; return 6; default: break;int icp(char ch) switch(ch) return 4; return 2;b
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1