• 大小: 1002KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-04
  • 语言: 其他
  • 标签:

资源简介

广工数据结构课设,内含报告,源程序,非常完整!!!

资源截图

代码片段和文件信息

#include
#include

#define OVERFLOW -1
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define LH +1  //左高
#define EH 0   //等高
#define RH -1  //右高

typedef int RcdType;
typedef int Status;

//存放输入数据的数组结构体
typedef struct ArrayNode{
    RcdType data;
    ArrayNode *next;
}ArrayNode *Array;

//平衡二叉树结构体
typedef struct BBSTNode{
    RcdType data;
    int bf;
    BBSTNode *lchild *rchild;
}BBSTNode*BBSTree;

//链队列结构体
typedef struct LQNode{
    BBSTree elem;
    struct LQNode *next;
}LQNode *QueuePtr;

//队列结点结构体
typedef struct{
    QueuePtr front;
    QueuePtr rear;
}LQueue;

//栈结点结构体
typedef struct LSNode{
    BBSTree data;         //数据域
    struct LSNode *next;   //指针域
}LSNode *LStack;          //结点和链栈类型


/*初始化一个链栈*/
Status InitStack_LS(LStack &S){
    S = NULL;
}


/*进栈操作*/
Status Push_LS(LStack &S BBSTree e){
    LSNode *t;
    t = (LSNode*)malloc(sizeof(LSNode));
    if(NULL==t) return OVERFLOW;
    t->data = e;
    t->next = S;
    S = t;
    return OK;
}

/*出栈操作*/
Status Pop_LS(LStack &S BBSTree &e){
    LSNode *t;
    if(S==NULL) return ERROR;
    t = S;
    e = t->data;
    S = S->next;
    return OK;
}


/*获得栈顶元素*/
Status GetTop_LS(LStack S BBSTree &e){
    if(NULL==S) return ERROR;
    else{
        e = S->data;
        return OK;
    }
}

/*判断栈是否为空*/
Status StackEmpty_LS(LStack S){
    if(NULL==S) return TRUE;
    else return FALSE;
}

/*初始化链队列*/
void InitQueue_LQ(LQueue &Q){
    Q.front = NULL;
    Q.rear= NULL;
}

/*链队列进队操作*/
Status EnQueue_LQ(LQueue &Q BBSTree e){
    LQNode *p;
    p = (LQNode*)malloc(sizeof(LQNode));
    if(NULL==p) return OVERFLOW;
    p->elem = e;
    p->next = NULL;
    if(NULL==Q.front) Q.front = p;  //e插入空队列
    else Q.rear->next = p;  //e插入非空队列
    Q.rear = p;  //队尾指针指向新的队尾
    return OK;
}

/*链队列出栈操作*/
Status DeQueue_LQ(LQueue &Q BBSTree &e){
    LQNode *p;
    if(NULL==Q.front) return ERROR;
    p = Q.front;
    e = p->elem;
    Q.front = p->next;
    if(Q.rear==p) Q.rear = NULL;
    free(p);
    return OK;
}


/*求平衡二叉树的深度*/
int BBSTreeDepth(BBSTree T){
    int depthLeft depthRight;
    if(NULL==T) return 0;
    else{
        depthLeft = BBSTreeDepth(T->lchild);
        depthRight = BBSTreeDepth(T->rchild);
        return 1+(depthLeft > depthRight ? depthLeft : depthRight);
    }
}

/*交换二叉树所有结点的左右子树*/
void ExchangeSubTree(BBSTree &T){
    BBSTree temp;
    if(NULL!=T){
        ExchangeSubTree(T->lchild);   //使用递归交换左子树
        ExchangeSubTree(T->rchild);   //使用递归交换右子树
        if((T->lchild!=NULL)||(T->rchild!=NULL)){    //如果T的子树有一个不为空,则交换左右子树
            temp = T->lchild;
            T->lchild = T->rchild;
            T->rchild = temp;
        }
    }

}

/*左旋调整*/
void L_Rotate(BBSTree &p){
    BBSTree rc = p->rchild;
    p->rchild = rc->lchild;
    rc->lchild = p;
    p = rc;
}

/*右旋调整*/
void R_Rotate(BBSTree &p){

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      15467  2017-01-03 23:39  数据结构课设\Tree head.cpp

     文件       8374  2017-01-03 23:39  数据结构课设\Tree head.o

     文件     434132  2017-01-04 00:12  数据结构课设\平衡二叉树--课程设计.doc

     文件       8556  2017-01-04 00:05  数据结构课设\平衡二叉树.cpp

     文件     147542  2017-01-04 00:05  数据结构课设\平衡二叉树.exe

     文件      17445  2017-01-04 00:05  数据结构课设\平衡二叉树.o

     文件     235516  2016-12-29 22:40  数据结构课设\数据结构实验指导书(2015春).doc

     文件     738304  2017-01-03 12:28  数据结构课设\树--设计性实验.doc

     文件      16571  2017-01-03 13:27  数据结构课设\题目12  平衡二叉树操作的演示.docx

     目录          0  2017-12-28 23:57  数据结构课设

----------- ---------  ---------- -----  ----

              1621907                    10


评论

共有 条评论