您的位置:

c语言深度解释,C++基础与深度解析

本文目录一览:

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语言?

实践,学以致用。实践是最好的老师,只要好好实践体会,那么,一定会掌握的很牢靠的