在外的日子都是孤独的,希望每天都能过得充实,每天都会有收获。
ShanSir@Dalian 2012-4-8
贴两段小程序,积累生活的点点滴滴。
ShanSir@Dalian 2012-4-8
贴两段小程序,积累生活的点点滴滴。
汉诺塔问题
#include <stdio.h>
void hannuota(int n,char A,char B,char C)
{
//如果是一个盘子
// 直接将X柱子上的盘子从X移动到Z
//否则
// 先将X柱子上的n-1个盘子借助C移动到B
// 直接将A柱子上的盘子从A移动到C
// 最近将B柱子上的n-1个盘子借助A移动到C
if(1 == n)
{
printf("将编号为%d的盘子直接从%c柱子移动到%c柱子\n",n,A,C);
}
else
{
hannuota(n-1,A,C,B);
printf("将编号为%d的盘子直接从%c柱子移动到%c柱子\n",n,A,C);
hannuota(n-1,B,A,C);
//printf("将%c柱子上的%d个盘子借助%c移动到%c",A,n-1,C,B);
//printf("将%c柱子上的盘子从%c移动到%c",A,A,C);
//printf("将%c柱子上的%d个盘子借助%c移动到%c",B,n-1,A,C);
}
}
int main(void)
{
char ch1 = 'A';
char ch2 = 'B';
char ch3 = 'C';
int n;
printf("请输入要移动盘子的个数:");
scanf("%d",&n);
hannuota(n,'A','B','C');
return 0;
}
![](https://img-my.csdn.net/uploads/201204/08/1333900716_5647.jpg)
#include <stdio.h>
#include <malloc.h>
struct BTNode
{
char data;
struct BTNode* pLchild;//p是指针 L是左 child是孩子
struct BTNode* pRchild;
};
struct BTNode* CreateBTree(void);
void PreTraverseBTree(struct BTNode* pT);
void InTraverseBTree(struct BTNode* pT);
void PostTraverseBTree(struct BTNode* pT);
int main(void)
{
struct BTNode* pT = CreateBTree();
printf("先序遍历为:");
PreTraverseBTree(pT);
printf("\n");
printf("中序遍历为:");
InTraverseBTree(pT);
printf("\n");
printf("后序遍历为:");
PostTraverseBTree(pT);
printf("\n");
return 0;
}
void PreTraverseBTree(struct BTNode* pT)
{
//伪算法
//先访问根节点
//再先序访问左子树
//先序访问右子树
if(NULL != pT)
{
printf("%c\t",pT->data);
if(NULL != pT ->pLchild)
{
PreTraverseBTree(pT->pLchild);
}
if(NULL != pT->pRchild)
{
PreTraverseBTree(pT->pRchild);
}
}
}
void InTraverseBTree(struct BTNode* pT)
{
//伪算法
//先中序访问左子树
//访问根节点
//再中序访问右子树
if(NULL != pT)
{
if(NULL != pT ->pLchild)
{
InTraverseBTree(pT->pLchild);
}
printf("%c\t",pT->data);
if(NULL != pT->pRchild)
{
InTraverseBTree(pT->pRchild);
}
}
}
void PostTraverseBTree(struct BTNode* pT)
{
//伪算法
//先后序访问左子树
//再后序访问右子树
//再显示根节点
if(NULL != pT)
{
if(NULL != pT ->pLchild)
{
PostTraverseBTree(pT->pLchild);
}
if(NULL != pT->pRchild)
{
PostTraverseBTree(pT->pRchild);
}
printf("%c\t",pT->data);
}
}
struct BTNode* CreateBTree()
{
struct BTNode* pA = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode* pB = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode* pC = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode* pD = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode* pE = (struct BTNode *)malloc(sizeof(struct BTNode));
pA->data = 'A';
pB->data = 'B';
pC->data = 'C';
pD->data = 'D';
pE->data = 'E';
pA->pLchild = pB;
pA->pRchild = pC;
pB->pLchild = pB ->pRchild = NULL;
pC->pLchild = pD;
pC->pRchild = NULL;
pD->pLchild = NULL;
pD->pRchild = pE;
pE->pLchild = pE->pRchild = NULL;
return pA;
}
![](https://img-my.csdn.net/uploads/201204/09/1333900874_6679.jpg)