mirror of
https://github.com/by777/dataStructureForC.git
synced 2026-02-02 17:48:51 +08:00
有Bug
This commit is contained in:
@@ -1,139 +0,0 @@
|
||||
#include "string.h"
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
#include "io.h"
|
||||
#include "math.h"
|
||||
#include "time.h"
|
||||
|
||||
#define OK 1
|
||||
#define ERROR 0
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
#define MAXSIZE 100 /* <20>洢<EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
|
||||
typedef int Status; /* Status<75>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ֵ<EFBFBD>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>,<2C><>OK<4F><4B> */
|
||||
typedef char TElemType;
|
||||
typedef enum {Link,Thread} PointerTag; /* Link==0<><30>ʾָ<CABE><D6B8><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>ָ<EFBFBD><D6B8>, */
|
||||
/* Thread==1<><31>ʾָ<CABE><D6B8>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD> */
|
||||
typedef struct BiThrNode /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD>ṹ */
|
||||
{
|
||||
TElemType data; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
struct BiThrNode *lchild, *rchild; /* <20><><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
PointerTag LTag;
|
||||
PointerTag RTag; /* <20><><EFBFBD>ұ<EFBFBD>־ */
|
||||
} BiThrNode, *BiThrTree;
|
||||
|
||||
TElemType Nil='#'; /* <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Կո<D4BF><D5B8><EFBFBD>Ϊ<EFBFBD><CEAA> */
|
||||
|
||||
Status visit(TElemType e)
|
||||
{
|
||||
printf("%c ",e);
|
||||
return OK;
|
||||
}
|
||||
|
||||
/* <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>ֵ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T */
|
||||
/* 0(<28><><EFBFBD><EFBFBD>)/<2F>ո<EFBFBD>(<28>ַ<EFBFBD><D6B7><EFBFBD>)<29><>ʾ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD> */
|
||||
Status CreateBiThrTree(BiThrTree *T)
|
||||
{
|
||||
TElemType h;
|
||||
scanf("%c",&h);
|
||||
|
||||
if(h==Nil)
|
||||
*T=NULL;
|
||||
else
|
||||
{
|
||||
*T=(BiThrTree)malloc(sizeof(BiThrNode));
|
||||
if(!*T)
|
||||
exit(OVERFLOW);
|
||||
(*T)->data=h; /* <20><><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>(ǰ<><C7B0>) */
|
||||
CreateBiThrTree(&(*T)->lchild); /* <20>ݹ鹹<DDB9><E9B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if((*T)->lchild) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
(*T)->LTag=Link;
|
||||
CreateBiThrTree(&(*T)->rchild); /* <20>ݹ鹹<DDB9><E9B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if((*T)->rchild) /* <20><><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD> */
|
||||
(*T)->RTag=Link;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
BiThrTree pre; /* ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>,ʼ<><CABC>ָ<EFBFBD><D6B8><EFBFBD>ոշ<D5B8><D5B7>ʹ<EFBFBD><CAB9>Ľ<EFBFBD><C4BD><EFBFBD> */
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
void InThreading(BiThrTree p)
|
||||
{
|
||||
if(p)
|
||||
{
|
||||
InThreading(p->lchild); /* <20>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if(!p->lchild) /* û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
{
|
||||
p->LTag=Thread; /* ǰ<><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
p->lchild=pre; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8>ǰ<EFBFBD><C7B0> */
|
||||
}
|
||||
if(!pre->rchild) /* ǰ<><C7B0>û<EFBFBD><C3BB><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD> */
|
||||
{
|
||||
pre->RTag=Thread; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
pre->rchild=p; /* ǰ<><C7B0><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>p) */
|
||||
}
|
||||
pre=p; /* <20><><EFBFBD><EFBFBD>preָ<65><D6B8>p<EFBFBD><70>ǰ<EFBFBD><C7B0> */
|
||||
InThreading(p->rchild); /* <20>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
}
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Thrtָ<74><D6B8>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD> */
|
||||
Status InOrderThreading(BiThrTree *Thrt,BiThrTree T)
|
||||
{
|
||||
*Thrt=(BiThrTree)malloc(sizeof(BiThrNode));
|
||||
if(!*Thrt)
|
||||
exit(OVERFLOW);
|
||||
(*Thrt)->LTag=Link; /* <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD> */
|
||||
(*Thrt)->RTag=Thread;
|
||||
(*Thrt)->rchild=(*Thrt); /* <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ָ */
|
||||
if(!T) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ָ */
|
||||
(*Thrt)->lchild=*Thrt;
|
||||
else
|
||||
{
|
||||
(*Thrt)->lchild=T;
|
||||
pre=(*Thrt);
|
||||
InThreading(T); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
pre->rchild=*Thrt;
|
||||
pre->RTag=Thread; /* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
(*Thrt)->rchild=pre;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T(ͷ<><CDB7><EFBFBD><EFBFBD>)<29>ķǵݹ<C7B5><DDB9>㷨 */
|
||||
Status InOrderTraverse_Thr(BiThrTree T)
|
||||
{
|
||||
BiThrTree p;
|
||||
p=T->lchild; /* pָ<70><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
while(p!=T)
|
||||
{ /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,p==T */
|
||||
while(p->LTag==Link)
|
||||
p=p->lchild;
|
||||
if(!visit(p->data)) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>յĽ<D5B5><C4BD><EFBFBD> */
|
||||
return ERROR;
|
||||
while(p->RTag==Thread&&p->rchild!=T)
|
||||
{
|
||||
p=p->rchild;
|
||||
visit(p->data); /* <20><><EFBFBD>ʺ<EFBFBD><CABA>̽<EFBFBD><CCBD><EFBFBD> */
|
||||
}
|
||||
p=p->rchild;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
BiThrTree H,T;
|
||||
printf("<EFBFBD>밴ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>:'ABDH##I##EJ###CF##G##')\n");
|
||||
CreateBiThrTree(&T); /* <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
InOrderThreading(&H,T); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
|
||||
InOrderTraverse_Thr(H); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
printf("\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: Xu Bai
|
||||
* @Date: 2019-07-23 22:43:14
|
||||
* @LastEditors: Xu Bai
|
||||
* @LastEditTime: 2019-07-27 23:26:33
|
||||
* @LastEditTime: 2019-07-27 23:35:31
|
||||
*/
|
||||
#include "string.h"
|
||||
#include "stdio.h"
|
||||
@@ -40,7 +40,7 @@ Status visit(ElemType e)
|
||||
return OK;
|
||||
}
|
||||
|
||||
Status CreateBiThrTree(BiThrNode *T)
|
||||
Status CreateBiThrTree(BiThrTree *T)
|
||||
{
|
||||
ElemType h;
|
||||
scanf("%c", &h);
|
||||
@@ -148,7 +148,7 @@ Status InOrderTraverse_Thr(BiThrTree T)
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>յĽ<D5B5><C4BD><EFBFBD> */
|
||||
return ERROR;
|
||||
}
|
||||
while (p->RTag == Thread && p->rchid != T)
|
||||
while (p->RTag == Thread && p->rchild != T)
|
||||
{
|
||||
p = p->rchild;
|
||||
visit(p->data);
|
||||
@@ -162,7 +162,7 @@ int main()
|
||||
{
|
||||
|
||||
BiThrTree H, T;
|
||||
printf("<EFBFBD>밴ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>:'ABDH##I##EJ###CF##G##')\n");
|
||||
printf(":'ABDH##I##EJ###CF##G##')\n");
|
||||
CreateBiThrTree(&T); /* <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
InOrderThreading(&H, T); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
|
||||
|
||||
Reference in New Issue
Block a user