美式三叉树代码(四叉树编码分解图)
admin 发布:2022-12-19 05:16 111
本篇文章给大家谈谈美式三叉树代码,以及四叉树编码分解图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
求这个C++程序代码
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
typedef struct QNode{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct {
QNode *front;
QNode *rear;
}LinkQueue;
void InitQueue(LinkQueue Q)
{
Q.front=(QNode *)malloc(sizeof(QNode));
if(!Q.front) exit(-1);
Q.front-next=NULL;
Q.rear=Q.front;
}
void EnQueue(LinkQueue Q,int e)
{
Q.rear-next=(QNode *)malloc(sizeof(QNode));
Q.rear=Q.rear-next;
Q.rear-data=e;
Q.rear-next=NULL;
}
void DeQueue(LinkQueue Q,int e)
{
if(!Q.front-next)
;
else
{
QNode *p=Q.front-next;
e=p-data;
Q.front-next=p-next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
}
bool IsEmpty(LinkQueue Q)
{
if(Q.front==Q.rear)
return true;
return false;
}
int MinLength(int start,int des)//求start到des的最短路径的长度
{
int n=0,e;
LinkQueue Q;
InitQueue(Q);
EnQueue(Q,start);
while(!IsEmpty(Q))
{
DeQueue(Q,e);
n++;
if(e!=des)
{
EnQueue(Q,e-1);
EnQueue(Q,e+1);
EnQueue(Q,2*e);
}
else
if( log(2*n+1)/log(3)-(int)( log(2*n+1)/log(3) ) 1e-6 )
return (int)(log(2*n+1)/log(3))-1;
else
return (int)(log(2*n+1)/log(3));//相当于求结点数为n的完全三叉树的高度,再减1
}
}
void main()
{
int start,des;
scanf("%d%d",start,des);//输入起点和终点
printf("%d",MinLength(start,des));
}
jsp中要做一个 模糊查询 例如输入姓名时 输入“张”下拉框中即出现"张*、张**”等 代码该如何实现?
你的意思是不是,在页面如果打“z”,转换成汉字对应的一些字,然后再根据这些字,来查数据库,取的相关的数据?
这样麻烦。
一般都是在存数据的时候,就已经转换好了对应的拼音。
比如要存:张** ,在存入数据库的时生成一个对应的拼音:zhang** ,把这个也一起存了,汉字存汉字字段,拼音存拼音字段。
查找时输入z,就直接在拼音字段里查需要的数据。
如果表允许再增加字段,还是加个拼音的字段,查找时候方便,快捷。
网上找个汉字转换拼音的类,把数据处理一下,存进拼音字段里。
这个是汉字转拼音参考:
求多叉树的后序遍历代码。。。
给的是3叉树,可以自己改MAX_CHILDREN_NUM 3 //三叉树
输入节点,然后分别建底下的各个孩子,注意,每个孩子都要求输入数据,没有则输入0.反正建树很烦
#include stdio.h
#include malloc.h
#include math.h
#include conio.h
#define MAX_DEPTH 4
#define MAX_CHILDREN_NUM 3 //三叉树
typedef struct tnode
{
int data;
tnode **children, *parent; //parent域可不要
}tnode;
typedef struct
{
tnode* ptr;
int cur;//cur记录当前访问到的孩子节点下标
bool visited; //是否被访问标记
}snode;
typedef struct
{
snode *elem;
int top;
}stack;
void initstack(stack *s)
{
s-elem=(snode*)malloc(
(int)pow(MAX_CHILDREN_NUM,MAX_DEPTH)*sizeof(snode));
s-top = 0;
}
void pop(stack *s, snode *e)
{
--s-top;
*e = s-elem[s-top];
}
void push(stack *s, snode *e)
{
s-elem[s-top] = *e;
++s-top;
}
void create(tnode **t, tnode *parent)
{
int n;
scanf("%d", n);
if(!n)
{
*t = NULL;
return;
}
else
{
*t = (tnode*)malloc(sizeof(tnode));
(*t)-data = n;
(*t)-parent = parent;//可不要
(*t)-children = (tnode**)malloc(MAX_CHILDREN_NUM*sizeof(tnode*));
for(n = 0; n MAX_CHILDREN_NUM; ++n)
create((*t)-children[n], *t);
}
}
void visit(tnode *t)
{
printf("%5d", t-data);
}
void postorder1(tnode *t)
{
int i;
if(t)
{
for(i = 0; i MAX_CHILDREN_NUM; ++i)
postorder1(t-children[i]);
visit(t);
}
}
void postorder2(tnode *t)
{// 和前序遍历基本相同,只是把访问语句的执行由
// 入栈时执行改为出栈时执行
stack s;
snode e;
initstack(s);
e.ptr = t;
e.cur = 0;
e.visited = false;
push(s, e);
while(s.top)
{
while(s.elem[s.top-1].ptr)
{
do
{
e.ptr = s.elem[s.top-1].ptr-children[s.elem[s.top-1].cur];
++s.elem[s.top-1].cur;
}while(!e.ptr s.elem[s.top-1].curMAX_CHILDREN_NUM);
e.cur = 0;
e.visited = false;
push(s, e);
}
pop(s,e);
while(s.top s.elem[s.top-1].cur == MAX_CHILDREN_NUM)
{
if(!s.elem[s.top-1].visited)
{
visit(s.elem[s.top-1].ptr);
s.elem[s.top-1].visited = true;
}
pop(s, e);
}
}
}
void main()
{
tnode *T;
create(T, NULL);
printf("\n递归后序遍历:");
postorder1(T);
printf("\n非递归后序遍历:");
postorder2(T);
}
关于美式三叉树代码和四叉树编码分解图的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
- 上一篇:php用户登陆代码(php用户注册登录代码)
- 下一篇:个人资料代码(个人社会代码)
相关推荐
- 05-05jquery代码点击复制(jquery复制对象及事件)[20240505更新]
- 05-05租赁车系统代码(汽车租凭系统代码)[20240505更新]
- 05-05小说源码里面的下载代码(小说 源代码)[20240505更新]
- 05-05网页图片位置代码(网页设计中图片的位置)[20240505更新]
- 05-05关于nat打洞代码的信息[20240505更新]
- 05-05实现导航界面代码(导航用户界面)[20240505更新]
- 05-05酷代码网站(很酷的代码)[20240505更新]
- 05-05数字货币最新开源代码(数字货币开源代码公布意味着什么)[20240505更新]
- 05-05jquery代码交互(jquery前后端交互)[20240505更新]
- 05-05dreamweaver压缩代码(dreamweaver格式化代码)[20240505更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接