ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:108.53KB ,
资源ID:16681575      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16681575.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DATASTRUCTWord格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DATASTRUCTWord格式.docx

1、软件:配有 Windows98/2000/XP 操作系统,安装 Visual C+ 。5、实验时间:10学时6、该文档的文件名不要修改,存入 命名的文件夹中7、该表中的数据只需填空,已有内容不要修改实验结果(运行结果界面及源程序,运行结果界面放在前面):#include stdafx.hiostream.hstring.henum Status OK=1,ERROR=0;typedef struct char name8; int number;team;struct BinaryTreeNodeteam data;BinaryTreeNode *LChild;BinaryTreeNode *

2、RChild;struct SType BinaryTreeNode *ptr; bool B;struct QType BinaryTreeNode *qtr;struct Stack SType *element; int top; int MaxSize;struct Queue QType *element; int front; int rear;void CreatStack(Stack &S,int &MaxStackSize)/构造一个最大容量为MaxStackSize的堆栈S S.MaxSize=MaxStackSize; S.element=new STypeS.MaxSi

3、ze; S.top=-1;bool IsEmpty(Stack &S)/判断堆栈S是否为空 if(S.top=-1) return true; return false;bool IsFull(Stack &/判断堆栈S是否为满 if(S.top=S.MaxSize-1) return true;Status Push(Stack &S,SType &x)/x进S栈,返回进栈后的状态值 if(IsFull(S) return ERROR; S.top+; S.elementS.top=x; return OK;Status Pop(Stack &/将S栈顶的值取至x中,返回出栈后的状态值 if

4、(IsEmpty(S) return ERROR; x=S.elementS.top; S.top-;void CreatQueue(Queue &Q,int &MaxQueueSize)/构造一个最大容量为MaxQueueSize的队列Q Q.MaxSize=MaxQueueSize; Q.element=new QTypeQ.MaxSize+1; Q.front=0; Q.rear=0;bool IsEmpty(Queue &Q)/判断队列Q是否为空 if(Q.front=Q.rear) return true;bool IsFull(Queue &/判断队列Q是否为满 if(Q.fron

5、t=(Q.rear+1)%(Q.MaxSize+1) return true;Status Enqueue(Queue &Q,QType &/x进Q队列,返回进队后的状态值 if(IsFull(Q) return ERROR; Q.elementQ.rear=x; Q.rear=(Q.rear+1)%(Q.MaxSize+1);Status Dequeue(Queue &/将Q队列队头的值取至x中,返回出队后的状态值 if(IsEmpty(Q) return ERROR; x=Q.elementQ.front; Q.front=(Q.front+1)%(Q.MaxSize+1);void Pr

6、eOrder(BinaryTreeNode *BT)/二叉树的前序遍历递归算法 if(BT) coutdata.name:data.numberLChild);RChild); void InOrder(BinaryTreeNode *BT)/二叉树的中序遍历递归算法 InOrder(BT-void PostOrder(BinaryTreeNode *BT)/二叉树的后序遍历递归算法 PostOrder(BT-void PreOrderN(BinaryTreeNode *BT)/二叉树的前序遍历非递归算法 Stack S; SType T; T.ptr=BT; int MaxStackSize

7、=50; CreatStack(S,MaxStackSize); while(T.ptr|!IsEmpty(S) if(T.ptr) cout/访问根结点 Push(S,T);/根结点指针进栈,以后回溯时再退栈 T.ptr=T.ptr-LChild;/指针指向访问过的结点左子树 else /左子树为空时,利用堆栈回溯 if(! Pop(S,T);/从堆栈中弹出回溯结点指针(该结点已访问过) T.ptr=T.ptr-RChild;/指针指向回溯结点的右子树 delete S.element;void InOrderN(BinaryTreeNode *BT)/二叉树的中序遍历非递归算法 do wh

8、ile(T.ptr) /找最左子树/结点(未访问)指针进栈,以后回溯时再退栈/指针指向 if(! /左子树为空时,利用堆栈回溯 Pop(S,T);/从堆栈中弹出回溯结点指针(该结点未访问过) while(T.ptr)|!IsEmpty(S);void PostOrderN(BinaryTreeNode *BT)/二叉树的后序遍历非递归算法 BinaryTreeNode *p=BT; SType temp; while(p)|! if(p) temp.B=false;/准备进栈的结点进栈标志设为第一次进栈 temp.ptr=p; Push(S,temp);/根结点(未访问)指针及标志进栈,以后回

9、溯时再退栈 p=p-/指针指向该 else /左子树为空时,利用堆栈回溯 Pop(S,temp);/从堆栈中弹出回溯结点指针及标志(该结点未访问过) p=temp.ptr;/p指向退栈结点,否则p的值是空 if(temp.B) cout/访问该结点 p=NULL;/将p设为空的目的是为强制退栈作准备 else temp.B=true;/改变进栈标志,准备重新进栈 Push(S,temp); p=p-的右子树 void LevelOrderTL(BinaryTreeNode *BT)/从左至右,从上至下按层次遍历一棵二叉树(Top_Left) Queue Q; QType D; D.qtr=BT

10、; BinaryTreeNode *q; int MaxQueueSize=50; CreatQueue(Q,MaxQueueSize);/产生一个空队列,这一过程函数可以不在这里进行 while(D.qtr)D.qtr- q=D.qtr; if(D.qtr-LChild) D.qtr=D.qtr- Enqueue(Q,D);/左子树进队 D.qtr=q;RChild) /右子树进队Dequeue(Q,D) return;/出队返回状码ERROR时结束(队空) delete Q.element;void LevelOrderTR(BinaryTreeNode *BT)/从右至左,从上至下按层次

11、遍历一棵二叉树(Top_Right)BinaryTreeNode *MakeNode(team &/构造结点 ptr=new BinaryTreeNode; if(!ptr) return NULL; ptr-data=x;LChild=NULL;RChild=NULL; return ptr;void MakeBinaryTree(BinaryTreeNode *root,BinaryTreeNode *left,BinaryTreeNode *right)/联接root,left,right所指的结点指针为二叉树 root-LChild=left;RChild=right;int Bina

12、ryHeight(BinaryTreeNode *BT)/返回二叉树的高度BT) return 0; int HighL=BinaryHeight(BT- int HighR=BinaryHeight(BT- if(HighLHighR) return +HighL; else return +HighR;void BinaryDelete(BinaryTreeNode *BT)/二叉树的删除算法 BinaryDelete(BT- delete BT;/这里的delete是系统过程void main() BinaryTreeNode *p11;int m=2; team x11; cout*T

13、he team of Information management and information system 0904*nPlease input the information of the team:n /*for(int i=1;ixi.name;Number:xi.number; pi=MakeNode(xi); */ char a1111=,dingcailiuxuanwuzhuyangjiangliaozhou int b11=0,14,24,3,11,10,5,1,8,17,21; for(int i=1;i+) strcpy(xi.name,ai); xi.number=b

14、i; for(i=1;=5;i+)/构造二叉树 if(i=5) pi-LChild=p2*i; else MakeBinaryTree(pi,p2*i,p2*i+1); /输出二叉树的结构The binarytree is: _x1.namex1.number_endl; _x2.namex2.number_ _x3.namex3.number_ _x4.namex4.number_ _x5.namex5.number x6.namex6.numberx7.namex7.numberx8.namex8.numberx9.namex9.numberx10.namex10.number/前序递归遍

15、历The result of preorder recursive traversal:PreOrder(p1);endl /中序递归遍历coutThe result of inorder recursive traversal:InOrder(p1); /后序递归遍历The result of postorder recursive traversal:PostOrder(p1); /前序非递归遍历The result of pretorder non-recursive traversal:PreOrderN(p1);/中序非递归遍历The result of inorder non-re

16、cursive traversal:InOrderN(p1); /后序非递归遍历The result of postorder non-recursive traversal:PostOrderN(p1); /层次遍历从上至下、从左至右The result of level traversal from up to down from left to right:LevelOrderTL(p1); /层次遍历从上至下、从右至左The result of level traversal from up to down from right to left:LevelOrderTR(p1); /二

17、叉树高度The height of the Binarytree is:BinaryHeight(p1)next = NULL;int StackNotEmpty(LSNode *head)/*判堆栈是否非空,非空返回1;空返回0*/if(head-next = NULL) return 0;else return 1;int StackPush(LSNode *head, DataType x) /*把数据元素x插入链式堆栈head的栈顶作为新的栈顶 */LSNode *p;if(p = (LSNode *)malloc(sizeof(LSNode) = NULL)printf(内存空间不足无法插入! n);return 0;data = x;next = head-next;/*新结点链入栈顶*/head-next = p;/*新结点成为新的栈顶*/return 1;int StackPop(LSNode *head, DataType *d)/*出栈并把栈顶元素由参数d带回*/LSNode *p = head-if(p = NULL) 堆栈已空出错!next = p-/*删除原栈顶结点*/

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1