国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

回復(fù)編程愛(ài)好者請(qǐng)教的有關(guān)題二叉樹的創(chuàng)建問(wèn)題

2019-11-17 05:47:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
很有幸大家能夠看得起偶,讓偶幫助大家解決一些常見(jiàn)的問(wèn)題,在解決問(wèn)題的過(guò)程當(dāng)中,偶自己也是受益最大的。不過(guò),由于本人的技術(shù)水平有限,離偶火力范圍太遠(yuǎn)的問(wèn)題偶也是鞭長(zhǎng)莫及,還望大家見(jiàn)諒~這次,有一位同學(xué)提出說(shuō)他的二叉樹搞的不是很清楚,想請(qǐng)求偶予以幫助,并且還附帶了一份源文件,偶仔細(xì)的看了一下,發(fā)現(xiàn)里面出的問(wèn)題很大,大部分的都是一些很原則性的問(wèn)題,比如說(shuō)函數(shù)的定義,函數(shù)的數(shù)值傳遞等等問(wèn)題,鑒于訪問(wèn)本論壇的同學(xué)大都是大一、二的同學(xué),基礎(chǔ)課學(xué)的都不是很透徹,那我就將這篇文章和我修改的源代碼一并附上,供大家學(xué)習(xí)和借鑒(但愿我這么做沒(méi)有侵犯同學(xué)的了個(gè)人的隱私--若有的話還請(qǐng)大家提出來(lái),我下次就不附帶源文件,只發(fā)我的代碼部分,OK?)
這位同學(xué)的程序希望實(shí)現(xiàn)的功能就是:
用先根遍歷的方式,來(lái)創(chuàng)建一個(gè)二叉樹,當(dāng)我們輸入0的時(shí)候,表示我們的當(dāng)前節(jié)點(diǎn)沒(méi)有左子樹或者是右子樹。
------------------同學(xué)發(fā)過(guò)來(lái)的請(qǐng)求幫助的源代碼-------------
#include <stdio.h>
#include <stdlib.h>
#define NULL 0
strUCt BTnode
{int d;
 struct btnode *lchild;
 struct btnode *rchild;
};
typedef struct btnode* bt;
void main()
{int b, k;
 struct btnode *p,*t;
  scanf("%d",&b);
 if(b!=0)
  {p=(struct btnode * )malloc(sizeof(struct btnode));
   p->d=b;p->lchild=NULL;p->rchild=NULL;
   if(k==0) t=p;
   if(k==1) bt->lchild=p;
   if(k==2) bt->rchild=p;
   creatbt(p,1);
   creatbt(p,2);
  }
}
我想大家一定和我一樣看的一頭霧水吧,部分函數(shù)根本就沒(méi)有定義,怎么能夠進(jìn)行調(diào)用呢?
其實(shí),在C語(yǔ)言中,基本上函數(shù)的功能都是我們自己去實(shí)現(xiàn)的,這個(gè)就要靠我們的基本功了。-----------------------------下面是我更正的程序源代碼和附加的說(shuō)明部分-------------------------
#include <stdio.h>
#include <stdlib.h>
#define NULL  0       /*若在Visual C++6.0中,可能要求其為空指針類型,即*/
#define DataType  int      /*#define NULL ((void *)0)  */
typedef struct BinTreeNode *PBinTreeNode;   /*定義指向二叉樹節(jié)點(diǎn)的指針類型*/
typedef PBinTreeNode *PBinTree;     /*定義一個(gè)保存根節(jié)點(diǎn)的指針類型*/struct BinTreeNode
{ DataType info;
  PBinTreeNode llink;
  PBinTreeNode rlink;
};
PBinTreeNode Create_BinTree(void); /*聲明Create_BinTree()函數(shù),后面的Create_BinTreeeNode()要調(diào)用到它,不然的話會(huì)報(bào)錯(cuò)*/
PBinTree Create_BinTreeRoot(void) /*/創(chuàng)建一個(gè)指向二叉樹根節(jié)點(diǎn)的指針*/
{PBinTree pbtree;
 pbtree=(PBinTree)malloc(sizeof(PBinTreeNode));
 if(pbtree==NULL) pbtree=(PBinTree)realloc(pbtree,sizeof(PBinTreeNode));
 *pbtree=Create_BinTree();  /*為根節(jié)點(diǎn)賦值*/
 return (pbtree);
}PBinTreeNode Create_BinTreeNode(void) /*/創(chuàng)建一個(gè)二叉樹的節(jié)點(diǎn)*/
{PBinTreeNode pbnode;
 pbnode=(PBinTreeNode)malloc(sizeof(PBinTreeNode));
 if(pbnode==NULL) pbnode=(PBinTreeNode)realloc(pbnode,sizeof(PBinTreeNode));
 else pbnode->llink=pbnode->rlink=(PBinTreeNode)NULL;
 return (pbnode);
}PBinTreeNode Create_BinTree(void)
{PBinTreeNode pbnode ;
 DataType i;
 printf("Please input number to the binatree: 0 to exit: ");
 scanf("%d", &i);
 if(i==0) pbnode= NULL;
 else
 {
  pbnode = (PBinTreeNode)malloc(sizeof(struct BinTreeNode));
  if(pbnode == NULL)
  {
   printf("Out of space! ");
   return pbnode ;
  }
  pbnode->info=i;
  pbnode->llink=Create_BinTree();  /*左遞歸調(diào)用Create_BinTree()*/
  pbnode->rlink=Create_BinTree();  /*右遞歸調(diào)用Create_BinTree()*/ 
 }
 return pbnode;
}
void outputTree(PBinTreeNode pbnode,int totalSpace) /*輸出我們的二叉樹*/
{int i;
 if(pbnode!=NULL) {totalSpace+=5;   /*右子樹與根節(jié)點(diǎn)相距5個(gè)空格*/
  outputTree(pbnode->rlink,totalSpace);
 for(i=0;i<totalSpace;i++) printf(" ");
  printf("%d ",pbnode->info);
  outputTree(pbnode->llink,totalSpace);   /*遞歸調(diào)用左子樹*/
 }
}int main()
{PBinTree pbtree;
 int totalSpace = 0;
 pbtree = Create_BinTreeRoot();    /*Create_BinTreeRoot()函數(shù)中調(diào)用了Create_BinTree() */
 outputTree(*pbtree,totalSpace);
 return 0;
}----------------------------------------程序的調(diào)試部分-------------------------
假設(shè)我們輸入的數(shù)值是: 1  2  0  0  3 0  0
我們得到的輸出結(jié)果為:
        3
  1
        2大家可以去試一下,有什么問(wèn)題請(qǐng)?jiān)谙旅媪粞?br />我的
QQ: 37170732   郵箱:owenstone@sina.com.cn
歡迎大家加我,和我討論~~

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 苍山县| 山阴县| 玉龙| 杨浦区| 东乌珠穆沁旗| 淮北市| 定远县| 建湖县| 阿瓦提县| 叶城县| 河池市| 洛阳市| 海城市| 花垣县| 娱乐| 封开县| 张家口市| 霍山县| 东海县| 洞口县| 大连市| 沙雅县| 长寿区| 囊谦县| 嵩明县| 宾阳县| 绥芬河市| 武夷山市| 桑日县| 丽江市| 徐水县| 石泉县| 瑞昌市| 榆林市| 睢宁县| 湘潭县| 临海市| 宁阳县| 靖安县| 武城县| 旅游|