最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

郝斌數(shù)據(jù)結(jié)構(gòu)自學(xué)教程(78集全)上課板書和源代碼查看簡(jiǎn)介

2023-08-19 17:21 作者:圣凱shengkai  | 我要投稿

在P74里,郝斌老師,在結(jié)構(gòu)體創(chuàng)建時(shí),沒(méi)有賦初值,而是在后面的Create...函數(shù)里賦的初值。

我嘗試在結(jié)構(gòu)里里面賦初值,而在后面函數(shù)里只建立部分連接,導(dǎo)致程序最后運(yùn)行到一半就卡住。

這是我的錯(cuò)誤源代碼:

#include <stdio.h>

#include <malloc.h>

struct BTNode {

struct BTNode* pLchild = NULL;

char BTData;

struct BTNode* pRchild = NULL;

};

struct BTNode* CreateTree();

void PreTraverse(BTNode* BTree);

void InTraverse(BTNode* BTree);

void PostTraverse(BTNode* BTree);

int main()

{

struct BTNode* BTHead = CreateTree();

printf("以下是先序遍歷的結(jié)果:\n");

PreTraverse(BTHead);

printf("\n");

printf("以下是中序遍歷的結(jié)果:\n");

InTraverse(BTHead);

printf("\n");

printf("以下是后序遍歷的結(jié)果:\n");

PostTraverse(BTHead);

}

//創(chuàng)建鏈?zhǔn)綐?/p>

struct BTNode* CreateTree()

{

struct BTNode* NodeA = (struct BTNode*)malloc(sizeof(BTNode));

struct BTNode* NodeB = (struct BTNode*)malloc(sizeof(BTNode));

struct BTNode* NodeC = (struct BTNode*)malloc(sizeof(BTNode));

struct BTNode* NodeD = (struct BTNode*)malloc(sizeof(BTNode));

struct BTNode* NodeE = (struct BTNode*)malloc(sizeof(BTNode));


NodeA->BTData = 'A';

NodeB->BTData = 'B';

NodeC->BTData = 'C';

NodeD->BTData = 'D';

NodeE->BTData = 'E';


NodeA->pLchild = NodeB;

NodeA->pRchild = NodeC;

NodeC->pLchild = NodeD;

NodeD->pRchild = NodeE;

return NodeA;

}

//遍歷鏈?zhǔn)綐?/p>

//1.先序遍歷

void PreTraverse(BTNode* BTree)

{

if (BTree == NULL)

{

return;

}

printf("%c ", BTree->BTData);

PreTraverse(BTree->pLchild);

PreTraverse(BTree->pRchild);

}

//2.中序遍歷

void InTraverse(BTNode* BTree)

{

if (BTree == NULL)

{

return;

}

PreTraverse(BTree->pLchild);

printf("%c ", BTree->BTData);

PreTraverse(BTree->pRchild);

}

//3.后序遍歷

void PostTraverse(BTNode* BTree)

{

if (BTree == NULL)

{

return;

}

PreTraverse(BTree->pLchild);

PreTraverse(BTree->pRchild);

printf("%c ", BTree->BTData);

}


在上網(wǎng)搜索原因后,才得知,C語(yǔ)言結(jié)構(gòu)體里不能賦初始值!

不知道為什么的,看參考鏈接:https://blog.csdn.net/Dontla/article/details/117920832

修改后的正確代碼:

【與上面的錯(cuò)誤代碼相比,這里的代碼只是將結(jié)構(gòu)體里的賦初值那部分去掉,然后在Create...函數(shù)里手動(dòng)為有空孩子的節(jié)點(diǎn)賦值為NULL】

#include <stdio.h>

#include <malloc.h>

struct BTNode {

/*正確寫法*/

struct BTNode* pLchild;

char BTData;

struct BTNode* pRchild;

};

struct BTNode* CreateTree();

void PreTraverse(BTNode* BTree);

void InTraverse(BTNode* BTree);

void PostTraverse(BTNode* BTree);

int main()

{

struct BTNode* BTHead = CreateTree();

printf("以下是先序遍歷的結(jié)果:\n");

PreTraverse(BTHead);

printf("\n");

printf("以下是中序遍歷的結(jié)果:\n");

InTraverse(BTHead);

printf("\n");

printf("以下是后序遍歷的結(jié)果:\n");

PostTraverse(BTHead);

}

//創(chuàng)建鏈?zhǔn)綐?/p>

struct BTNode* CreateTree()

{

struct BTNode* NodeA = (struct BTNode*)malloc(sizeof(BTNode));

struct BTNode* NodeB = (struct BTNode*)malloc(sizeof(BTNode));

struct BTNode* NodeC = (struct BTNode*)malloc(sizeof(BTNode));

struct BTNode* NodeD = (struct BTNode*)malloc(sizeof(BTNode));

struct BTNode* NodeE = (struct BTNode*)malloc(sizeof(BTNode));


NodeA->BTData = 'A';

NodeB->BTData = 'B';

NodeC->BTData = 'C';

NodeD->BTData = 'D';

NodeE->BTData = 'E';


NodeA->pLchild = NodeB;

NodeA->pRchild = NodeC;


NodeB->pLchild = NULL;

NodeB->pRchild = NULL;


NodeC->pLchild = NodeD;

NodeC->pRchild = NULL;


NodeD->pLchild = NULL;

NodeD->pRchild = NodeE;


NodeE->pLchild = NULL;

NodeE->pRchild = NULL;


return NodeA;

}

//遍歷鏈?zhǔn)綐?/p>

//1.先序遍歷

void PreTraverse(BTNode* BTree)

{

if (BTree == NULL)

{

return;

}

printf("%c ", BTree->BTData);

PreTraverse(BTree->pLchild);

PreTraverse(BTree->pRchild);

}

//2.中序遍歷

void InTraverse(BTNode* BTree)

{

if (BTree == NULL)

{

return;

}

PreTraverse(BTree->pLchild);

printf("%c ", BTree->BTData);

PreTraverse(BTree->pRchild);

}

//3.后序遍歷

void PostTraverse(BTNode* BTree)

{

if (BTree == NULL)

{

return;

}

PreTraverse(BTree->pLchild);

PreTraverse(BTree->pRchild);

printf("%c ", BTree->BTData);

}


郝斌數(shù)據(jù)結(jié)構(gòu)自學(xué)教程(78集全)上課板書和源代碼查看簡(jiǎn)介的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
文登市| 沭阳县| 垫江县| 达拉特旗| 寻甸| 台南县| 汝阳县| 黔西| 定结县| 区。| 桑日县| 寻甸| 濮阳县| 英德市| 宁乡县| 长沙县| 娄烦县| 朝阳区| 滨海县| 花莲县| 桑植县| 板桥市| 广汉市| 静海县| 兴仁县| 泾阳县| 洞头县| 北川| 台山市| 五原县| 洛扎县| 玉龙| 大姚县| 宁武县| 三门峡市| 长白| 当雄县| 富川| 韩城市| 新野县| 乐山市|