stack.h裡面的**:
#pragma once
#include
#include
#define max 1024
//這裡的棧已經知道陣列的最大長度,因此不需要再用在堆區再次開闢一塊記憶體來用二級指標指向
struct sstack
;//隱藏資料,不讓使用者能夠得到操作結構體的介面
//類似c++類中的private屬性
typedef
void
* seqstack;
//初始化棧----返回棧的結構體,為了隱藏資料用萬能指標作為返回值
seqstack init_stack()
;//入棧
void
push_stack
(seqstack stack,
void
* data)
;//出棧:尾刪
void
pop_stack
(seqstack stack)
;//返回棧頂元素
seqstack top_stack
(seqstack stack)
;//返回棧的大小
intsize_stack
(seqstack stack)
;//判斷棧是否為空
bool empty_stack
(seqstack stack)
;//銷毀棧
void
destroy_stack
(seqstack stack)
;
stack.cpp
#include
"stack.h"
//初始化棧----返回棧的結構體,為了隱藏資料用萬能指標作為返回值
seqstack init_stack()
//初始化陣列--清空陣列,一開陣列裡面會有隨機值
memset
(stack->data,
null
,sizeof
(void*)
* max)
;//長度初始哈
stack->size =0;
//返回棧的結構體
return stack;
}//入棧
void
push_stack
(seqstack stack,
void
* data)
//下面從陣列尾部開始插入
mystack->data[mystack->size]
= data;
//長度加一
mystack->size++;}
//出棧:尾刪
void
pop_stack
(seqstack stack)
//返回棧頂元素
seqstack top_stack
(seqstack stack)
//返回棧的大小
intsize_stack
(seqstack stack)
//判斷棧是否為空
bool empty_stack
(seqstack stack)
//銷毀棧
void
destroy_stack
(seqstack stack)
main.cpp
#define _crt_secure_no_warnings
#include
#include
#include
"stack.h"
//二叉樹的非遞迴遍歷
struct binarynode
;void
norecursion
(binarynode* root)
//如果標誌為假,將標誌改為真
ptop->flag =1;
//將該節點右子樹,左子樹和根分布壓入棧中
//如果右子樹為空,就不放入棧中
if(ptop->rchild !=
null
)//如果左子樹為空,就不放入棧中
if(ptop->lchild !=
null
)//放入根
push_stack
(mystack, ptop);}
//銷毀棧
destroy_stack
(mystack);}
void
output()
; binarynode bnode =
; binarynode cnode =
; binarynode dnode =
; binarynode enode =
; binarynode fnode =
; binarynode hnode =
; binarynode gnode =
;//建立關係
二叉樹遍歷(遞迴 非遞迴)
二叉樹以及對二叉樹的三種遍歷 先根,中根,後根 的遞迴遍歷演算法實現,以及先根遍歷的非遞迴實現。node public class node public node left public node right public object value 遍歷訪問操作介面 public inte ce ...
二叉樹非遞迴遍歷
二叉樹非遞迴遍歷的幾個要點 1 不管前序 中序還是後序,它們的遍歷路線 或者說是回溯路線,先沿左邊一直走到盡頭,然後回溯到某節點,並跳轉到該節點的右孩子 如果有的話 然後又沿著這個有孩子的左邊一直走到盡頭 都是一樣的。2 明確每次回溯的目的。比如,前序回溯的目的是為了訪問右子樹 中序回溯的目的是為了...
非遞迴遍歷二叉樹
中序遞迴遍歷 void inordertrvdigui node pnode 然而,當樹的深度很大 比如16 時 假設為滿二叉樹 樹的節點數為 2 0 2 1 2 2 2 15 2 16 65536,遍歷整個二叉樹意味著有65536次函式呼叫,這將極大地增加程式執行時間。這時,應該採取非遞迴便利二叉...