当前位置:首页 > 代码 > 正文

美式三叉树代码(四叉树编码分解图)

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站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/2962.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载