【郝斌数据结构自学笔记】75-78_链式二叉树遍历具体程序演示_5种常用排序概述和快速排序详细讲解_再次讨论什么是数据结构_再次讨论到底什么是泛型

75_16_链式二叉树遍历具体程序演示

【郝斌数据结构自学笔记】75-78_链式二叉树遍历具体程序演示_5种常用排序概述和快速排序详细讲解_再次讨论什么是数据结构_再次讨论到底什么是泛型_第1张图片

//程序执行有问题

#include

#include

 

struct BTNode

{

         intdata;

         structBTNode *pLchhid;//p是指针,L是左,child是孩子

         structBTNode *pRchhid;

 

};

void PreTraverseBTree(   struct BTNode * pT);

void InTraverseBTree(      struct BTNode * pT);

void PostTraverseBTree( struct BTNode * pT);

struct BTNode * CreateBTree(void);

 

 

int main(void)

{

 

         structBTNode * pT=CreateBTree();

         printf("前序遍历:\n");

         PreTraverseBTree(pT);

         printf("中序遍历:\n");

         InTraverseBTree(pT);

         printf("后序遍历:\n");

         PostTraverseBTree(pT);

 

         return0;

}

 

struct BTNode * CreateBTree(void)

{

         structBTNode * pA=(struct BTNode *)malloc(sizeof(struct BTNode ));

         structBTNode * pB=(struct BTNode *)malloc(sizeof(struct BTNode ));

         structBTNode * pC=(struct BTNode *)malloc(sizeof(struct BTNode ));

         structBTNode * pD=(struct BTNode *)malloc(sizeof(struct BTNode ));

         structBTNode * pE=(struct BTNode *)malloc(sizeof(struct BTNode ));

        

         pA->data='A';

         pB->data='B';

         pC->data='C';

         pD->data='D';

         pE->data='E';

 

         pA->pLchhid=pB;

         pA->pRchhid=pC;

         pB->pLchhid=pB->pRchhid=NULL;

         pC->pLchhid=pD;

         pC->pRchhid=NULL;

         pD->pLchhid=NULL;

         pD->pRchhid=pE;

         pE->pLchhid=pE->pRchhid=NULL;

 

         returnpA;

}

 

void PreTraverseBTree(   struct BTNode * pT)

{

         if(pT!=NULL)

         {

                   printf("%c\n",pT->data);

                   if(NULL!=pT->pLchhid)

                   {

                            PreTraverseBTree(pT->pLchhid);

                   }

                   if(NULL!=pT->pLchhid)

                   {

                            PreTraverseBTree(pT->pRchhid);

                   }

                   //pT->pLchhid可以代表整个左子树

         }

}

 

void InTraverseBTree(      struct BTNode * pT)

{

         if(pT!=NULL)

         {       

                   if(NULL!=pT->pLchhid)

                   {

                            InTraverseBTree(pT->pLchhid);

                   }

                   printf("%c\n",pT->data);

                   if(NULL!=pT->pLchhid)

                   {

                            InTraverseBTree(pT->pRchhid);

                   }

                   //pT->pLchhid可以代表整个左子树

         }

}

void PostTraverseBTree( struct BTNode * pT)

{

         if(pT!=NULL)

         {

                   if(NULL!=pT->pLchhid)

                   {

                            PostTraverseBTree(pT->pLchhid);

                   }

                   if(NULL!=pT->pLchhid)

                   {

                            PostTraverseBTree(pT->pRchhid);

                   }

                   printf("%c\n",pT->data);

                   //pT->pLchhid可以代表整个左子树

         }

}

76_17_5种常用排序概述快速排序详细讲解

排序:

冒泡

插入

选择

快速排序

归并排序

排序和查找的关系:

         排序是查找的前提,排序是重点

77_18_再次讨论什么是数据结构

研究的是数据的存储和数据的操作的一门学问。

数据的存储分为两类:

         分体的存储

         个体关系的存储

从某个角度而言,数据的最核心的就是个体关系的存储,个体的存储可以忽略不计。

78_19_再次讨论到底什么是泛型

同一种逻辑结构,无论该逻辑结构物理存储是什么样子的,我们可以对它执行相同的操作。


你可能感兴趣的:(【郝斌数据结构自学笔记】75-78_链式二叉树遍历具体程序演示_5种常用排序概述和快速排序详细讲解_再次讨论什么是数据结构_再次讨论到底什么是泛型)