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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

某某工业大学应数刘智煌数据结构Word格式文档下载.docx

1、/定义名字字符串 int score;typedef struct BiTNode /定义数据类型 ElemType data; struct BiTNode *lchild,*rchild; /左右孩子指针*BiTree,BiTNode;/堆栈typedef struct BiTree *base;/栈底 BiTree *top; int size;/大小SqStack;Status InitStack(SqStack &S) S.base=(BiTree *)malloc(SIZE * sizeof(BiTree)/申请一个空间储存树; if(!S.base) exit(OVERFLOW)

2、;/栈底不存在退出程序 S.top=S.base;/把顶指针值赋给底指针 S.size=SIZE;/树的大小等于申请SizE大小 return 1;Status GetTop(SqStack S,BiTree &e)/获得最上面的指针 if(S.top=S.base) return 0;/头等于尾空指针 e=*(S.top-1);Status Push(SqStack &S,BiTree e)/把输入的数压进栈 if(S.top-S.base=S.size)/有空间可以储存 S.base=(BiTree *)realloc(S.base,(S.size+INC) * sizeof(BiTree

3、);/有空间就把输入的数推进栈里,没有就退出程序。 if(! S.top=S.base+S.size; S.size+=INC; *S.top+=e;Status Pop(SqStack &S,BiTree &e)/把数推出指针/ e=*-S.top;/把不需要的数推出int StackEmpty(SqStack S)/测试是不是空栈 if(S.base=S.top) return 1; else return 0;/队列typedef BiTree QElemType;/构造一个树typedef struct QNode QElemType data; QNode *next;/*next指

4、针*QueuePtr;struct LinkQueue/构造一个队列 QueuePtr front,rear;Status InitQueue(LinkQueue &Q)/队列类型(Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode) exit(OVERFLOW);/如果首队列尾队列队列,申请空间储存结点,结束程序 Q.front-next=NULL;Status EnQueue(LinkQueue &Q,QElemType e) QueuePtr p;(p=(QueuePtr)malloc(sizeof(QNode) exit(OVERFLOW); p-

5、data=e; Q.rear-next=p; Q.rear=p;Status DeQueue(LinkQueue &Q,QElemType &e) if(Q.front=Q.rear) return 0; p=Q.front-next; e=p-data;next=p- if(Q.rear=p) Q.rear=Q.front; free(p);/二叉排序树Status InitDSTable(BiTree &TREE1)/构造一棵树叫TREE1 TREE1=NULL;BiTree SearchBST(BiTree T,StudentITREE1ype key)/查找树里面的学号 T|EQ(ke

6、y,T-data.key)/比较输入的学号和树里面的学号 return T; else if LT(key,T-data.key) return SearchBST(T-lchild,key);/如果相同返回树 elserchild,key);Status SearchBST(BiTree &T,StudentITREE1ype key,BiTree f,BiTree &p) T) p=f; return 0; /如果非空,把f的值赋给p else if EQ(key,T- p=T;data.key)lchild,key,T,p);rchild,key,T,p); /不同就重复查找直到相同 S

7、tatus InsertBST(BiTree &T, ElemType e)/插入结点信息 BiTree p,s;SearchBST(T,e.key,NULL,p) s=(BiTree)malloc(sizeof(BiTNode); s-/插入结点lchild=s-rchild=NULL;/左右孩子指针等于空值p) T=s; /若果非空树,s的值赋给T。 else if LT(e.key,p-lchild=s;rchild=s; /如果e.key大于data.key,则插入左孩子指针,否则插入右孩子指针/删除树 void Delete(BiTree & BiTree q,s;p-rchild)

8、 q=p; p=p-lchild; free(q); /如果,右孩子没有p,则在左孩子找p else if(!lchild) rchild; /如果左孩子没有p,则在右孩子中找。 else s=p-/把左孩子中p赋给s。 while(s- q=s; s=s- /循环直到右孩子不存在s。data=s- /把找到最后一个右孩子的值赋给p/整段把树左边移到右边。 if(q!=p) /如果q不等于p q-rchild=s- /右孩子树移到左边 /否则s的值赋给q free(s); Status DeleteBST(BiTree &T,StudentITREE1ype key)/删除树 if EQ(ke

9、y,T- Delete(T); DeleteBST(T- /循环找和删除。int BiTreeDepth(BiTree T)/树的深度 int i,j;T) return 0; if(T-lchild) i=BiTreeDepth(T-lchild); else i=0;rchild) j=BiTreeDepth(T-rchild); else j=0; return ij?i+1:j+1;/若左孩子存在,循环寻找直到左孩子不存在,找到树的深度,返回树的深度。void Visit(ElemType e)/查看结点中学号 printf(%d-,e.key);/中序遍历Status InOrder

10、Traverse(BiTree T) BiTree p; SqStack S; InitStack(S);Push(S,T); while(!StackEmpty(S) while(GetTop(S,p)&p) Push(S,p- Pop(S,p); Pop(S,p); Visit(p-data); Push(S,p- n);/前序遍历Status PreOrderTraverse(BiTree T) /后序遍历Status PostOrderTraverse(BiTree T)SqStack R;BiTree r;InitStack(S);InitStack(R); Push(S,T); i

11、f(!StackEmpty(R) GetTop(R,r); if(GetTop(S,p)&rchild&p!=r) Push(S,p-Push(R,p); else Pop(S,p);Visit(p- if(r=p) Pop(R,r); p=NULL;Push(S,p);void ShowTree(BiTree T) /层次遍历法显示树 LinkQueue q; BiTree s; int d,t,i,n,num; d=t=i=n=0; num=1; d=BiTreeDepth(T); if(T) InitQueue(q); EnQueue(q,T); while(num=(pow(2,d)-

12、1) if(num=pow(2,i) printf( i+; t=0; n=(int)pow(2,d-i+t); for(int x=1;xdata.key); if(s&s-lchild) EnQueue(q,s- else EnQueue(q,NULL);rchild) EnQueue(q,s-int ShowTree2(BiTree T,int n)/递归法显示树 int i; if(T=NULL) return 1; ShowTree2(T-rchild,n+1); for(i=0;ilchild,n+1);int main() BiTree TREE1,p=NULL;char nam

13、e10;int score;ElemType e; printf( 1: Build the Binary Sort Tree 2:Insert the Nodes 3: Delete Nodes 4: preOrderTraverse ,InOrderTraverse, postOrderTraverse 5: build 50Nodes and test the efficiency n while(true) char choise;scanf(%c,&choise); if (choise=q) break; switch(choise) case 1 : InitDSTable(TR

14、EE1);nnnPlease insert the number of the Nodes you want :(x) int N1;N1);please insert :nnKeyStudents name score n) for(int i=0;=N1-1;i+) scanf(%d%s%de.key,e.name,&e.score); InsertBST(TREE1,e); the binary tree is shown as follow:nn ShowTree(TREE1); break;2please type in the Data as:nnStudentIDStudents

15、Name Students scoren scanf( p=SearchBST(TREE1,e.key); if (p) printf(you cannot repeat the Keyn else InsertBST(TREE1,e);cPlease insert the S: int N2;N2); p=SearchBST(TREE1,N2); if (p)Deleted:n The NUMBERS you have delete is asbelow n%d %s %d n,p-data.key,p-data.name,p-data.score); DeleteBST(TREE1,N2)

16、; 3PreOrderTraverse: PreOrderTraverse(TREE1);InOrderTraverse: InOrderTraverse(TREE1);:PostOrderTraversen PostOrderTraverse(TREE1);e struct ElemType rN=43,name,43,25,35,48,48,1,name6,82, 24,32,9,85,38,36,28,36,27,37, 23,33,12,12,40,38,13,13,45,14, 29,39,35,35,21,31,30,38,20,20, 11,11,31,31,19,19,32,3

17、2,18,18, 47,14,8,name4,80,5,name8,84,4,name2,78,17,17, 49,14,34,32,16,16,15,15,3,name7,83, 41,14,36,34,14,14,2,name1,4,26,34, 7,name9,85,39,39,46,46,10,name5,81,22,30, 42,44,33,33,44,44,6,name3,79,37, 50,50;N-1; InsertBST(TREE1,ri); int n = 10000000;/总共查找次数 double start = clock(); /查找二叉排序树开始时间i+) srand(i);/随循环设置随机种子 int randnumber = rand()%50;/每一次给定一个0到50的随机数 p=SearchBST(TREE1,randnumber); / if(p) / printf( double finish = clock();/查找二叉排序树结束时间 double time = finish-start;在二叉排序树里随机查找任意一个关键字%d次所需时间为:%lf,n,time); start = clock();/查找数组开始时间

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

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