指针和地址的区别

来源:互联网 发布:matlab中矩阵运算 编辑:程序博客网 时间:2024/05/17 06:37

/*
作者:丫丫
功能:测试传递指针和传递地址不一样(以二叉树的建立分析)
结论:传递指针指针所指的不容不会被改变,而传递地址则该地址的内容会被改变
日期:2014年12月3日
*/

#include <stdio.h>#include <malloc.h>#include <stdlib.h>#define STACK_SIZE 50//定义二叉节点typedef struct Node{    char data;    struct Node * LChild;    struct Node * RChild;}BiTNode, *BiTree;//创建一棵二叉树(传递地址)不需要返回值void CreatBiTree(BiTree * T){    char ch;    ch = getchar();    if (ch == ' ')        (*T) = NULL;    else    {        (*T) = (BiTree)malloc(sizeof(BiTNode));        (*T)->data = ch;        CreatBiTree(&((*T)->LChild));        CreatBiTree(&((*T)->RChild));    }}//创建一棵二叉树(传递指针)需要返回值/*BiTree CreatBiTree(BiTree T)         //T为指针类型,传递的是指针{    char ch;    ch = getchar();    if (ch == ' ')        T = NULL;    else    {        T = (BiTree)malloc(sizeof(BiTNode));        T->data = ch;        T->LChild = CreatBiTree(T->LChild);        T->RChild = CreatBiTree(T->RChild);    }    return T;            //返回创建的二叉树}*///先序遍历二叉树的递归算法void PreOder(BiTree T){    if (T != NULL)    {        printf("%c", T->data);        PreOder(T->LChild);        PreOder(T->RChild);    }}//中序遍历二叉树的递归算法void InOder(BiTree T){    if (T != NULL)    {        InOder(T->LChild);        printf("%c", T->data);        InOder(T->RChild);    }}//后序遍历二叉树的递归算法void PostOder(BiTree T){    if (T != NULL)    {        PostOder(T->LChild);        PostOder(T->RChild);        printf("%c", T->data);    }}int main(){    BiTree T;    printf("请按照先序遍历输入二叉树\n");    CreatBiTree(&T);    printf("先序遍历二叉树的递归算法:\n");    PreOder(T);    printf("\n中序遍历二叉树的递归算法:\n");    InOder(T);    printf("\n后序遍历二叉树的递归算法:\n");    PostOder(T);    printf("\n");    system("pause");    return 0;}
0 0
原创粉丝点击