- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计53190new.doc
目录
设计目的: 3
设计内容: 3
1.猴子选大王 3
2. 建立二叉树,层序、先序遍历 3
3. 各种排序 3
设计过程: 4
内容一: 4
内容二: 5
内容三: 7
心得体会: 10
设计目的:
熟练掌握二叉树的建立和对二叉树进行各种遍历的操作。
运用单链表结构解决实际问题,将理论运用到实践。
掌握几种重要的排序方法。
掌握一些基本的实用的算法。
通过实际运用充分掌握书本上的内容。
设计内容:
1.猴子选大王一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子 建立二叉树,层序、先序遍历
要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立建立二叉树存储结构的的输入函数、输出层序遍历序列的函数、输出先序遍历序列的函数; 各种排序
任务:用程序实现插入法排序、起泡法改进算法排序;
利用插入排序和冒泡法的改进算法,将用户随机输入的一列数按递增的顺序排好。
输入的数据形式为任何一个正整数,大小不限。
输出的形式:数字大小逐个递增的数列
设计过程:
内容一:
#include iostream
using namespace std;
typedef struct Node //创建结构体
{
int num;
struct Node *next;
}Node,*UsNode;
void Usf(int m,int n) //m为猴子数,n为单次循环数
{
//创建一个环
UsNode head,p,q,r;
head=(Node *)malloc(sizeof(Node)*m);
p=head;
p-num=1;
for(int i=2;i=m;i++){
r=(Node *)malloc(sizeof(Node));
p-next=r;
r-num=i;
p=r;
}
p-next=head;
q=p;
p=head;
while(q-next!=q){
for(int i=1;in;i++){
p=p-next;
q=q-next;
}
r=p;
p=p-next;
q-next=p;
free(r);
}
cout猴子王是q-num号猴子!;
}
void main(){
int x,y;
cout请输入猴子数:;
cinx;
cout请输入数圈循环周期:;
ciny;
Usf(x,y);
}
概要设计数圈循环周期:4
输出:
猴子王是5号猴子!
内容二:
#include iostream
#include string
#define NUM 100
using namespace std;
int NodeNum;
typedef struct node{
char data;
struct node *lchild,*rchild;
}BinTNode,*BinTree; //自定义二叉树的结点类型
BinTree CreatBinTree(void) //先序序列建立二叉树
{
BinTree T;
char ch;
if((ch=getchar())== )
return(NULL); //以空格作为续接点标志
else{
T=(BinTNode *)malloc(sizeof(BinTNode)); //生成结点
T-data=ch;
T-lchild=CreatBinTree(); //构造左子树
T-rchild=CreatBinTree(); //构造右子树
return(T);
}
}
void Pre(BinTree T) //先序遍历
{
if(T) {
printf(%c,T-data);
Pre(T-lchild); //先序遍历左子树
Pre(T-rchild); //先序遍历右子树
}
}
void ceng(BinTree T)
{
int front=0,rear=1;
BinTree Line[NUM],p; //定义结点的指针数组Line
Line[0]=T; //根入队
while(frontrear) //判断队列中是否还有内容,有就输出
{
if(Line[front])
coutLine[front]-data;
i
文档评论(0)