本文目錄一覽:
C語言程序的解釋
#include #include是固定格式,意思是」包含「,中的stdio.h,這是一個庫函數頭,用括起來,這句意思是把名為stdio.h的頭(其實是一個文件)包含到當前的程序中。在C語言中,有許多函數可以直接拿來用,比如printf函數(輸出函數),這些函數被稱為庫函數,要想調用這些函數,就要給出相應的庫函數頭,不同的庫函數需要給出不同的頭,庫函數頭的含義是」將這些函數的定義包含到程序中去「,因為你的程序中沒有這些庫函數的定義,所以你想要調用某些庫函數,就要給出相應的頭,將函數的定義包含到程序中是有編譯器完成的 #define CUBE(x) (x*x*x) 這是C語言中的宏定義,宏分為簡單的宏和帶參數的宏,宏有什麼作用?宏的一般格式是」#define 記號 替換列表「其中# define是「定義」的意思,也算是固定格式吧,記號可以是字母,符號等一切可能出現的東西,比如說#define CUBE(x) (x*x*x) 中的CUBE,一般用大寫字母(C語言程序員數十年遵循的規範,希望你不要打破哦);”替換列表「可以是表達式,語句等等(比如#define CUBE(x) (x*x*x) 中的(x*x*x),表示計算X的立方)。宏的作用是將程序中出現的所有記號用替換列表代替。比如說#define CUBE(x) (x*x*x)中,只要程序中出現CUBE(x) ,編譯器(這個工作是有編譯器完成的)就把CUBE(x) 替換為(x*x*x)。簡單的宏比如#define N 10,在程序中凡是有N的地方都將被替換為10.帶參數的宏比如說你的程序中的宏#define CUBE(x) (x*x*x),CUBE是記號,括弧中的x是參數,就像一個函數,在程序中用的時候,比如出現i=CUBE(10);那麼就將被替換為i=(10*10*10); i的值將被賦予10的立方。 main() 是C語言中的主函數,C語言是由函數組成的,其中主函數(或稱main函數)是必須有的,程序執行的時候是由主函數開始執行的,主函數內容要用{}括起來 int n=5; 定義變數n並賦與n值為5. int表示變數n的類型是整型,n=5是將n的值初始化為5(以後換可以改變),後面的分號是必須有的,C語言規定每條語句後都應該以分號結尾。 int s=CUBE(++n); 定義s為整型並賦予s的值為CUBE(++n),CUBE(++n)前面已經說過了,它將被替換為(++n*++n*++n),其中++n是一種算數運算符,就像乘除加減法一樣,++n的意義是將n自增1,整個表達式(即++n)不變,這裡要分清變數和表達式,比如a+b,變數是a和b,表達式是a+b,。所以這裡s就等於125. printf(「%d」,s); 這是一個輸出函數,%d表示S的類型為整形,輸出s的值。
C語言二叉樹的深度指什麼?怎麼求?
從根節點到葉子結點一次經過的結點形成樹的一條路徑,最長路徑的長度為樹的深度。根節點的深度為1。
解體思路:
1.如果根節點為空,則深度為0,返回0,遞歸的出口。
2.如果根節點不為空,那麼深度至少為1,然後我們求他們左右子樹的深度,
3.比較左右子樹深度值,返回較大的那一個
4.通過遞歸調用
#includeiostream
#includestdlib.h
using namespace std;
struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};
//創建二叉樹結點
BinaryTreeNode* CreateBinaryTreeNode(int value)
{
BinaryTreeNode* pNode=new BinaryTreeNode();
pNode-m_nValue=value;
pNode-m_pLeft=NULL;
pNode-m_pRight=NULL;
return pNode;
}
//連接二叉樹結點
void ConnectTreeNodes(BinaryTreeNode* pParent,BinaryTreeNode* pLeft,BinaryTreeNode* pRight)
{
if(pParent!=NULL)
{
pParent-m_pLeft=pLeft;
pParent-m_pRight=pRight;
}
}
//求二叉樹深度
int TreeDepth(BinaryTreeNode* pRoot)//計算二叉樹深度
{
if(pRoot==NULL)//如果pRoot為NULL,則深度為0,這也是遞歸的返回條件
return 0;
//如果pRoot不為NULL,那麼深度至少為1,所以left和right=1
int left=1;
int right=1;
left+=TreeDepth(pRoot-m_pLeft);//求出左子樹的深度
right+=TreeDepth(pRoot-m_pRight);//求出右子樹深度
return leftright?left:right;//返回深度較大的那一個
}
void main()
{
// 1
// / \
// 2 3
// /\ \
// 4 5 6
// /
// 7
//創建樹結點
BinaryTreeNode* pNode1 = CreateBinaryTreeNode(1);
BinaryTreeNode* pNode2 = CreateBinaryTreeNode(2);
BinaryTreeNode* pNode3 = CreateBinaryTreeNode(3);
BinaryTreeNode* pNode4 = CreateBinaryTreeNode(4);
BinaryTreeNode* pNode5 = CreateBinaryTreeNode(5);
BinaryTreeNode* pNode6 = CreateBinaryTreeNode(6);
BinaryTreeNode* pNode7 = CreateBinaryTreeNode(7);
//連接樹結點
ConnectTreeNodes(pNode1, pNode2, pNode3);
ConnectTreeNodes(pNode2, pNode4, pNode5);
ConnectTreeNodes(pNode3, NULL, pNode6);
ConnectTreeNodes(pNode5, pNode7, NULL );
int depth=TreeDepth(pNode1);
coutdepthendl;
system(“pause”);
}
出處:
C語言 二叉樹深度,解釋一下
葉子節點就是度為0的結點,比度為2的結點多一個,即度2的沒有,這樣度為1的結點就是11個,故深度為12(1度就是結點連著1個子樹,二叉樹最多倆子樹,即左右子樹)
如何學習C語言?
實踐,學以致用。實踐是最好的老師,只要好好實踐體會,那麼,一定會掌握的很牢靠的
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/231705.html