?? liststruct.cpp
字號:
//define the functions about List
#include "StdAfx.h"
#include "GlobalDefining.h"
#include "ListStruct.h"
#include <iostream.h>
#include <stdlib.h>
STATUS InitBiTree(BiTree &B)
{
B=NULL;
return OK;
}
STATUS InitQueue(SqQueue &Q)
{
//構造一個空隊列
Q.base=(BiTNode **)malloc(MAXQSIZE * sizeof(BiTNode));
if(!Q.base) exit(OVERFLOW);
Q.front=Q.rear=0;
return OK;
}
STATUS EnQueue(SqQueue &Q,BiTNode *e)
{
//插入元素B為Q的新的隊尾元素
if((Q.rear+1)% MAXQSIZE==Q.front) return ERROR;//隊列滿
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return OK;
}
STATUS DeQueue(SqQueue &Q,BiTNode *&e)
{
//若隊列不空,則刪除Q的隊頭元素,用e返回其值,并返回OK,否則返回ERROR
if(Q.front==Q.rear) return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return OK;
}
void Insert_SortTree (BiTree &B, int x)
{
if(B==NULL)
{
B=(BiTNode*)malloc(sizeof(BiTNode));
B->data = x;
B->lchild = B->rchild = NULL;
return;
}
BiTNode *q, *p = B;
while(p != NULL)
{
if (x == p->data) return;
else if (x < p->data)
{
q = p;
p = p->lchild;
}
else
{
q = p;
p = p->rchild;
}
}
BiTNode *newNode=(BiTNode*)malloc(sizeof(BiTNode));
newNode->data = x;
newNode->lchild = newNode->rchild = NULL;
if (x < q->data)
q->lchild = newNode;
else q->rchild = newNode;
}
STATUS LevelOrderTraverse(BiTree B)
{
SqQueue Q;
InitQueue(Q);
if(B!=NULL) EnQueue(Q,B);
BiTNode *p;
while (Q.rear!=Q.front)
{
DeQueue(Q,p);
cout<<p->data<<endl;
if(p->lchild!= NULL)
EnQueue(Q,p->lchild); //左兒子入隊
if(p->rchild!= NULL)
EnQueue(Q,p->rchild); //右兒子入隊
}
return OK;
}
STATUS InOrderTraverse(BiTree B)
{
if(B!=NULL)
{
InOrderTraverse(B->lchild);
cout<<B->data<<endl;
InOrderTraverse(B->rchild);
}
return OK;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -