在寫簡單迷宮和二叉樹**時,由於要用到棧和佇列,要將二叉樹的結構體宣告在棧裡,碰到結構體的宣告問題,看了好久,終於發現錯誤。
bintree.h
#include "stack.h"
typedef
char btdatatype;
typedef
struct bintreenode
btnode, *pbtnode;
typedef pbtnode datatype;
stack.htypedef
int datatype;
typedef
struct stack
stack, *pstack;
如果我想用到棧結構,就的將棧裡的結構體中的datatype替換成pbtnode。
錯誤的方法:
stack.h
extern pbtnode;
typedef pbtnode datatype;
typedef
struct stack
stack, *pstack;
這種方法看似正確,其實是錯誤的,在stack.h宣告的並不是乙個結構體,pbtnode只是在bintree.h裡給結構體起的別名,它不能延用到stack.h中
正確的方法
stack.h
extern btnode; //先將真正的結構體宣告
typedef
struct btnode *pbtnode;//然後在利用typdef給它起別名
typedef pbtnode datatype;
typedef
struct stack
stack, *pstack;
方法二:直接定義法
bintree.h
#include
"stack.h"
stack.htypedef
char btdatatype;
typedef
struct bintreenode
btnode, *pbtnode;
typedef pbtnode datatype;
typedef
struct stack
stack, *pstack;
這裡我們直接將二叉樹的結構體定義在棧中,然後引用棧的標頭檔案,簡單粗暴,但是不如第一中實用。 結構體的定義宣告 記憶體對齊
什麼是結構體?結構體怎麼進行定義宣告?結構體是一種資料結構,可以被宣告為陣列 指標和變數,結構體內部通常是由多個相同或不同型別的變數組成,舉幾個例子來說明理解它的定義宣告,如下 1.struct student 結構體中包含指向自己的指標 struct complex 結構體間互相包含時,需要對其中...
C 中結構體的宣告和定義
1 定義乙個結構體,型別為struct student 2struct student 3 8 9 定義了乙個結構體,型別為struct student 且定義了乙個結構體例項,名叫stu 10 struct student 11 stu 16 17 定義了無名的結構體,且定義了乙個結構體例項,名叫...
Hive不同檔案的讀取與序列化
stored as textfile 直接檢視hdfs stored as inputformat class 自己定義outformat class 基本步驟 1 編寫自己定義類 2 打成jar包 3 加入jar檔案,hive add jar jar 當前生效 或者複製到hive安裝資料夾的lib...