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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构指导书附源代码.docx

1、数据结构指导书附源代码1、计算二叉树叶子节点数.cpp#include#includetypedef struct Bitreeint data;Bitree *lchild,*rchild;BiNode;BiNode *root;int sum=0;int m=sizeof(Bitree);void insert_data(int x) Bitree *p,*q,*s; s=(Bitree*)malloc(m); s-data=x; s-lchild=NULL; s-rchild=NULL; if(!root) root=s;return; p=root; while(p) q=p; if(

2、p-data=x) printf(data already exist!n);return; else if(xdata) p=p-rchild; else p=p-rchild; if(xdata) q-lchild=s; else q-rchild=s;DLR(Bitree *root) if(root!=NULL) if(root-lchild=NULL)&(root-rchild=NULL) sum+; printf(%dn,root-data); DLR(root-lchild); DLR(root-rchild); return 0;main() int i=1,x; root=N

3、ULL; do printf(please input data%dn,i); i+; scanf(%d,&x); if(x=-9999) DLR(root); printf(nNow output count value:%dn,sum); return 0; else insert_data(x); while(x!=-9999); return(0);2、二叉排序树及遍历.cpp#include#include#include#define ERROR 0;#define FALSE 0;#define OK 1;#define TRUE 1;#define EQ(a,b)(a)=(b)

4、#define LT(a,b)(a)(b)#define LQ(a,b)(a)data) if(PreOrderTraverse(T-l,Visit) if(PreOrderTraverse(T-r,Visit) return OK; return ERROR; else return OK;Status PostOrderTraverse(BiTree T,int(*Visit)(int d) if(T) if(PostOrderTraverse(T-l,Visit) if(PostOrderTraverse(T-r,Visit) if(Visit(T-data) return OK; re

5、turn ERROR; else return 1;Status printelem(int d) printf(%4d,d); return OK; Status InOrderTraverse(BiTree T,int(*Visit)(int d) if(T) if(InOrderTraverse(T-l,Visit) if(Visit(T-data) if(InOrderTraverse(T-r,Visit) return OK; return ERROR; else return OK;Status SearchBST(BiTree T,KeyType key,BiTree f,BiT

6、ree *p) if(!T)*p=f;return FALSE; else if EQ(key,T-data)*p=T;return TRUE; else if LT(key,T-data) SearchBST(T-l,key,T,p); else SearchBST(T-r,key,T,p); Status InsertBST(BiTree *T,ElemType e) BiTree p,s; if(!SearchBST(*T,e,NULL,&p) s=(BiTree)malloc(sizeof(BiNode); s-data=e; s-l=s-r=NULL; if(!p) *T=s; el

7、se if(LT(e,p-data) p-l=s; else p-r=s; return TRUE; else return FALSE;void Delete(BiTree *p) BiTree q,s; if(!(*p)-r) q=(*p);(*p)=(*p)-l; free(q); else if(!(*p)-l)q=(*p);(*p)=(*p)-r; free(q); else /* q=(*p);s=(*p)-l; s=(*p)-l; while(s-r)q=s;s=s-r; (*p)-data=s-data; if(q!=(*p) q-r=s-l; else q-l=s-l; fr

8、ee(s); */ q=s=(*p)-l; while(s-r) s=s-r; s-r=(*p)-r; free(*p); (*p)=q; Status DeleteBST(BiTree *T,KeyType key) if(!(*T) return FALSE; else if(EQ(key,(*T)-data) Delete(T); else if(LT(key,(*T)-data) DeleteBST(&(*T)-l),key); else DeleteBST(&(*T)-r),key); return TRUE; void main() BiTree sroot=NULL; int i

9、; int a10=45,23,12,3,33,27,56,90,120,62; system(cls); for(i=0;i10;i+) InsertBST(&sroot,ai); printf(InorderTraverse:n); InOrderTraverse(sroot,printelem); printf(nNow PreOrdern); PreOrderTraverse(sroot,printelem); printf(nNowPostOrdern); PostOrderTraverse(sroot,printelem); for(i=0;i3;i+) DeleteBST(&sr

10、oot,ai); printf(nNow sroot has nodes:n); InOrderTraverse(sroot,printelem); printf(nNow PreOrdern); PreOrderTraverse(sroot,printelem); printf(nNow PostOrdern); PostOrderTraverse(sroot,printelem);3、查找.cpp#include#includetypedef int KeyType;typedef struct KeyType key; int maths,english;ElemType;#define

11、 EQ(a,b)(a)=(b)#define LT(a,b)(a)=(b)typedef struct ElemType *elem; int length;SSTable;int Search_Seq(SSTable ST,KeyType key) int i; ST.elem0.key=key; for(i=ST.length; !EQ(ST.elemi.key,key); -i); return i;int Search_Bin(SSTable ST,KeyType key) int low,mid,high; low=1; high=ST.length; while(lowlength

12、); while(ilength) fscanf(fp,%d%d%d,&(t-elemi.key),&(t-elemi.maths),&(t-elemi.english); i+; fclose(fp);main() ElemType stu50; SSTable class1; int i,j,k; long time; class1.elem=stu; getdata(&class1); printf(This class has %d students.n,class1.length); printf(Input stuNo you want search:n); scanf(%d,&k

13、); i=Search_Seq(class1,k); j=Search_Bin(class1,k); printf(Now use Search_Seq:n); printf(Maths Englishn); printf( %d %dn,class1.elemi.maths,class1.elemi.english); printf(n); printf(Now use Search_Bin:n); printf(Maths Englishn); printf( %d %dn,class1.elemj.maths,class1.elemj.english);Stu.txt61 89 302

14、56 883 57 774 89 995 96 336 88 954、二叉排序树的查找算法.cpp#include#include#include#define ERROR 0;#define FALSE 0;#define OK 1;#define TRUE 1;#define EQ(a,b)(a)=(b)#define LT(a,b)(a)(b)#define LQ(a,b)(a)data) if(PreOrderTraverse(T-l,Visit) if(PreOrderTraverse(T-r,Visit) return OK; return ERROR; else return O

15、K;Status PostOrderTraverse(BiTree T,int(*Visit)(int d) if(T) if(PostOrderTraverse(T-l,Visit) if(PostOrderTraverse(T-r,Visit) if(Visit(T-data) return OK; return ERROR; else return 1;Status printelem(int d) printf(%4d,d); return OK; Status InOrderTraverse(BiTree T,int(*Visit)(int d) if(T) if(InOrderTr

16、averse(T-l,Visit) if(Visit(T-data) if(InOrderTraverse(T-r,Visit) return OK; return ERROR; else return OK;Status SearchBST(BiTree T,KeyType key,BiTree f,BiTree *p) if(!T)*p=f;return FALSE; else if EQ(key,T-data)*p=T;return TRUE; else if LT(key,T-data) SearchBST(T-l,key,T,p); else SearchBST(T-r,key,T,

17、p); Status InsertBST(BiTree *T,ElemType e) BiTree p,s; if(!SearchBST(*T,e,NULL,&p) s=(BiTree)malloc(sizeof(BiNode); s-data=e; s-l=s-r=NULL; if(!p) *T=s; else if(LT(e,p-data) p-l=s; else p-r=s; return TRUE; else return FALSE;void Delete(BiTree *p) BiTree q,s; if(!(*p)-r) q=(*p);(*p)=(*p)-l; free(q);

18、else if(!(*p)-l)q=(*p);(*p)=(*p)-r; free(q); else /* q=(*p);s=(*p)-l; s=(*p)-l; while(s-r)q=s;s=s-r; (*p)-data=s-data; if(q!=(*p) q-r=s-l; else q-l=s-l; free(s); */ q=s=(*p)-l; while(s-r) s=s-r; s-r=(*p)-r; free(*p); (*p)=q; Status DeleteBST(BiTree *T,KeyType key) if(!(*T) return FALSE; else if(EQ(k

19、ey,(*T)-data) Delete(T); else if(LT(key,(*T)-data) DeleteBST(&(*T)-l),key); else DeleteBST(&(*T)-r),key); return TRUE; void main() BiTree sroot=NULL; int i; int a10=45,23,12,3,33,27,56,90,120,62; system(cls); for(i=0;i10;i+) InsertBST(&sroot,ai); printf(InorderTraverse:n); InOrderTraverse(sroot,prin

20、telem); printf(nNow PreOrdern); PreOrderTraverse(sroot,printelem); printf(nNowPostOrdern); PostOrderTraverse(sroot,printelem);/ for(i=0;i6;i-) DeleteBST(&sroot,ai); printf(nNow sroot has nodes:n); InOrderTraverse(sroot,printelem); printf(nNow PreOrdern); PreOrderTraverse(sroot,printelem); printf(nNo

21、w PostOrdern); PostOrderTraverse(sroot,printelem); 5、排序算法实例.cpp#include#include#include#define MAXSIZE 20#define LT(a,b) (a)=(b)typedef int InfoType;typedef int KeyType;typedef struct KeyType key; InfoType Otherinfo;RedType;typedef struct RedType rMAXSIZE+1; int length;SqList;void InsertSort(SqList

22、*L,int n) int i,j; for(i=1;ilength;+i) if(LT(L-ri.key,L-ri-1.key) L-r0=L-ri; L-ri=L-ri-1; for(j=i-1;LT(L-r0.key,L-rj.key);-j) L-rj+1=L-rj; L-rj+1=L-r0; printf(nThe records be sorted by %d function:n,n); for(i=1;iri.key); /*直接插入排序/void BInsertSort(SqList *L) int i,j; int low,high,m; for(i=2;ilength;+

23、i) L-r0=L-ri; low=1;high=i-1; while(lowr0.key,L-rm.key) high=m-1; else low=m+1; for(j=i-1;j=high+1;-j) L-rj+1=L-rj; L-rhigh+1=L-r0; /*折半插入排序*/int Partition(SqList *L,int low,int high) int pivotkey; L-r0=L-rlow; pivotkey=L-rlow.key; while(lowhigh) while(lowrhigh.key=pivotkey) -high; L-rlow=L-rhigh; while(lowrlow.keyrhigh=L-rlow; L-rlow=L-r0; return low;void QSort(SqList *L,int low,int high) int pivotloc; if(lowhigh) pivotloc=Partition(L,low,high); QSort(L,low,pivotloc-1)

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

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