二叉树算法引发的思考:指针参数传递、引用的陷阱

最近想熟悉一下基本的数据结构和算法,网站空间,于是写了一个二叉树程序,功能很简单,只有二叉树的建立和遍历。在这个过程中,却发现了一些平时没有注意到的细节问题,写出来作为总结和大家分享。

待讨论和遇到的细节问题如下:

(1)常见的定式思维:指针作为参数传递,是否就不需要再赋值,因为指针指向的值会同步更改,但是,你有考虑过,如果指针变量本身的值被更改了呢?怎么办?

(2)比较不常用的用法,香港空间,美国空间,针对指针变量的引用,你用过吗?

前提:

(1)笔者考虑到自己一直混淆使用C和C++,于是,打算这个简单的算法程序采用纯C来写,因此使用的是C编译器。

(2)关于C和C++的一些区别,笔者打算另外写一些系列文章来总结分析。

(3)另外,因为是练习写的程序,暂时还没有添加内存释放的方法。

程序的头部定义以及通用的方法:

#include <stdio.h>#include <malloc.h>#define TRUE 1#define FALSE -1typedef char ElemType; typedef int BOOL;typedef struct _BinaryTreeNode{ElemType elem;struct _BinaryTreeNode* left;struct _BinaryTreeNode* right;}BinareTreeNode, *BiTree;void PrintNode(ElemType elem){printf(, elem);}void PreOrderTraverse(BinareTreeNode* pNode, void(* Visit)(ElemType elem)){if (NULL != pNode){Visit(pNode->elem);PreOrderTraverse(pNode->left, PrintNode);PreOrderTraverse(pNode->right, PrintNode);}}在旅途中,我遇见了你,你我相识是缘分!

二叉树算法引发的思考:指针参数传递、引用的陷阱

相关文章:

你感兴趣的文章:

标签云: