欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构课程设计——猴子吃桃问题及二叉树(共14页).doc

    • 资源ID:13444609       资源大小:128KB        全文页数:14页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计——猴子吃桃问题及二叉树(共14页).doc

    精选优质文档-倾情为你奉上天津职业技术师范大学课 程 设 计 任 务 书 理 学院 数学0902 班 学生 张翔(28) 课程设计课题:1 猴子吃桃问题: 有一群猴子摘了一堆桃子,它们每天都吃当前桃子的一半再多吃一个,到了第10天就剩下一个桃子,用多种方法实现求出原来这群猴子共摘了多少桃子。要求:1)采用数组数据结构实现上述求解; 2)采用链式数据结构。2.实现二叉排序树:要求:用顺序表和二叉链表作为数据结构1) 以回车(n)为输入结束标志,输入数列L,生成一棵二叉排序树T;2) 对二叉排序树进行中序遍历,输出结果;3) 输入元素m,查找二叉排序树T,若存在包含m的结点,则删除该结点,并做中序遍历。否则显示信息“无m这个结点”。 一、课程设计工作日自 2012 年 2 月 21 日至 2012 年 3 月 2 日二、同组学生: 无 三、课程设计任务要求(包括课题来源、类型、目的和意义、基本要求、完成时间、主要参考资料等):课题来源:教师提供课题类型:设计课题的目的和意义:通过课程设计了解c语言中结构体的使用以及利用数据结构设计大型程序主要参考资料:黄刘生.数据结构.北京:经济科学出版社,2005.数据结构.北京:科学出版社,2001严蔚敏. 数据结构(C语言版) M. 北京:清华大学出版社. 2008.苏光奎.数据结构导学.北京:清华大学出版社,2002百度文库指导教师签字: 教研室主任签字: 天津职业技术师范大学课 程 设 计 评 审 表 理 学院 数学0902 班 学生 张翔(28) 设计任务完成情况及指导教师评语答辩情况评定成绩成绩: 指导教师签字: 日期: 教研室主任: 院长签字: 日期: 日期: 问题一、猴子吃桃问题 具体程序及运行结果如下:#include<stdio.h> #include<stdlib.h>#include <malloc.h>#define NULL 0#define Day 9/*函数声明*void creat();void print();void array();void End();void display();void fanhui();void display() system("cls");printf("n * 猴子吃桃子的问题 *n");printf("n * 1,用数组数据结构的方法实现。 *n");printf("n * 2,用链数据结构的方法实现。 *n");printf("n * 3,退出程序。 *n");printf("n *n");printf("n 请输入您的选择(1,2,3):");/*数组*void array() int ADay+1;/定义数组 int i; ADay=1;/第十天的桃子数 for(i=Day;i>=1;i-) Ai-1=(Ai+1)*2; /*第一天的桃子数是第2天桃子数加1后的2倍*/ printf("the total of peaches are %dn",A0); printf("桃子变化为:n"); for(i=0;i<= Day;i+) printf("第%d天的桃子数为:%dn",i+1,Ai);/*链表算法*typedef struct linknode int data; struct linknode *next;/链表指针node;node *head; /头结点void creat()/创建链表 node *p,*s; int peaches=1;/第十天时只剩下一个桃子int day=10;printf("输入天数");scanf("%d",&day);printf("输入第%d天还剩几个桃子:",day);scanf("%d",&peaches);head=(node*)malloc(sizeof(node);p=head;while(day>0)s=(node*)malloc(sizeof(node);/分配存属空间s->data=peaches;/用来存放结点数据p->next=s; /把结点插入链表中p=s;peaches=(peaches+1)*2;/第一天的桃子数是第二天桃子数加后的2倍;day-;p->next=NULL;p=head;head=head->next;/使头指针指向头结点free(p); /释放指针Pvoid print()/输出从这十天每天的桃子数 node *p;p=head;int day=10;printf("请确定您输入天数:");scanf("%d",&day);while(p&&day>0) printf("第%d天的桃子数:%d个n",day,p->data);p=p->next;day-;void End()printf("nnnn"); printf(" 1 谢谢观看 1n");printf(" n n"); printf(" n 张翔nnnn");/*主函数*void main() flg:display();int a;int b; scanf("%d",&a);if(a<1|a>4) /system("cls"); goto flg;else switch(a) case 1: system("cls"); printf("n *使用数组的方法:*nnn"); array(); printf("nnn*按<0>键返回主菜单!按任意数字键退出程序!*n"); scanf("%d",&b); if(b=0) goto flg; else system("cls"); End(); break; case 2: system("cls"); printf("n *使用链表的方法:*nnn"); creat(); print(); printf("nnn*任意键返回主菜单!按'0'退出程序!*n"); scanf("%d",&b); if(b=0) goto flg; else system("cls"); End(); break; case 3: system("cls"); End(); exit(0); #include<stdio.h> #include<stdlib.h>#include <malloc.h>#define NULL 0#define Day 9/*函数声明*void creat();void print();void array();int digui();void End();void display();void fanhui();void display() system("cls");printf("n * 猴子吃桃子的问题 *n");printf("n * 1,用数组数据结构的方法实现。 *n");printf("n * 2,用链数据结构的方法实现。 *n");printf("n * 3,退出程序。 *n");printf("n *n");printf("n 请输入您的选择(1,2,3):");/*数组*void array() int ADay+1;/定义数组 int i; ADay=1;/第十天的桃子数 for(i=Day;i>=1;i-) Ai-1=(Ai+1)*2; /*第一天的桃子数是第2天桃子数加1后的2倍*/ printf("the total of peaches are %dn",A0); printf("桃子变化为:n"); for(i=0;i<= Day;i+) printf("第%d天的桃子数为:%dn",i+1,Ai);/*链表算法*typedef struct linknode int data; struct linknode *next;/链表指针node;node *head; /头结点void creat()/创建链表 node *p,*s; int peaches=1;/第十天时只剩下一个桃子int day=10;printf("输入天数");scanf("%d",&day);printf("输入第%d天还剩几个桃子:",day);scanf("%d",&peaches);head=(node*)malloc(sizeof(node);p=head;while(day>0)s=(node*)malloc(sizeof(node);/分配存属空间s->data=peaches;/用来存放结点数据p->next=s; /把结点插入链表中p=s;peaches=(peaches+1)*2;/第一天的桃子数是第二天桃子数加后的2倍;day-;p->next=NULL;p=head;head=head->next;/使头指针指向头结点free(p); /释放指针Pvoid print()/输出从这十天每天的桃子数 node *p;p=head;int day=10;printf("请确定您输入天数:");scanf("%d",&day);while(p&&day>0) printf("第%d天的桃子数:%d个n",day,p->data);p=p->next;day-;void End()printf("nnnn"); printf(" 1 谢谢观看 1n");printf(" n n"); printf(" n 张翔nnnn");/*主函数*void main() flg:display();int a;int b; scanf("%d",&a);if(a<1|a>4) /system("cls"); goto flg;else switch(a) case 1: system("cls"); printf("n *使用数组的方法:*nnn"); array(); printf("nnn*按<0>键返回主菜单!按任意数字键退出程序!*n"); scanf("%d",&b); if(b=0) goto flg; else system("cls"); End(); break; case 2: system("cls"); printf("n *使用链表的方法:*nnn"); creat(); print(); printf("nnn*任意键返回主菜单!按'0'退出程序!*n"); scanf("%d",&b); if(b=0) goto flg; else system("cls"); End(); break; case 3: system("cls"); End(); exit(0); 按1:链式结构:按2:输入10天剩余一个桃子,运行的结果为:2.实现二叉排序树的程序如下:#include <iostream>using namespace std;class nodepublic: node(int i):data(i),left(NULL),right(NULL) void inorder(node *&root) /中序遍历,符合升序输出 if(root!=NULL) inorder(root->left); cout<<root->data<<' ' inorder(root->right); void insert(node *&ptr,int item) /在查找树中插入元素 if(ptr=NULL) ptr=new node(item); else if(item<ptr->data) insert(ptr->left,item); else insert(ptr->right,item); node *find(node *&ptr,int item) /在查找树中查找元素,找到返回所在结点指针,找不到返回空指针。 if(ptr=NULL) return NULL; if(ptr->data=item) return ptr; else if(item<ptr->data) find(ptr->left,item); else find(ptr->right,item); node *&findy(node *&ptr,int item) /在查找树中查找肯定存在的元素,并返回其引用 if(ptr->data=item) return ptr; else if(item<ptr->data) findy(ptr->left,item); else findy(ptr->right,item); node* rl()return left; node* rr()return right; void dele(node *&ptr) /删除值为item所在结点 if(ptr->rl()=NULL&&ptr->rr()=NULL) ptr=NULL; else if(ptr->rr()=NULL) ptr=ptr->rl(); else ptr=ptr->rr(); private: int data; node *left; /左孩子结点 node *right; /右孩子结点;int main() int t,i=0,j; cout<<"输入数字个数(结点个数):" cin>>t; cout<<"输入"<<t<<"个数字,数字之间用空格隔开:" cin>>j; node *x=new node(j); for(;i<t-1;i+) cin>>j; x->insert(x,j); cout<<"中序遍历为:" x->inorder(x); /作中序遍历 cout<<"n输入操作(当输入-1时程序结束):"<<endl; cin>>j; while(j!=-1) node *t=x->find(x,j); /定位结点 if(t!=NULL) node *&y=x->findy(x,j); x->dele(y); cout<<"中序遍历为:" x->inorder(x); else cout<<"无"<<j<<"这个节点" cout<<"n输入操作(当输入-1时程序结束):"<<endl; cin>>j; return 0;运行结果如下:专心-专注-专业

    注意事项

    本文(数据结构课程设计——猴子吃桃问题及二叉树(共14页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开