堆疊的實現包括有使用指標的實現方式和使用陣列的實現方式。
下面為指標的實現方式:
//堆疊也叫做lifo結構
/* 堆疊的基本操作包括清空棧和判斷是否是空棧都是棧的操作的一部分
*棧頂是唯一可見的操作
*棧的本質其實也是乙個表,任何表的方法都可以用來實現棧
*棧的實現包括兩種流行的方法,一種是使用指標來實現,另一種是使用陣列來實現
*///棧的鍊錶實現
//1.使用單鏈表來實現
//首先是定義:
#ifdef _stack_h
struct node
typedef struct node *ptrtonode;
typedef protonode stack;
intisempty(stack s);
stack
creatstack(void);
void
disposestack(stack s);
void
makeempty(stack s);
void
push(elementtype x, stack s);
elementtype
top(stack s)
void
pop(stack s);
#endif
struct node
;//測試堆疊是否為空
int
isempty(stack s)
stack
creatstack(void)
void //建立乙個空的棧
makeempty(stack s)
void //實現壓棧的操作
push(elementtype x,stack s)
}elementtype
top(stack s)
void
pop(stack s)
}
下面是使用陣列的實現方式:
#ifdef _stack_h
struct stackrecord;
struct stackrecord *stack;
int isempty(stack s);
int isfull(stack s);
stack creatstack(int maxelement);
void disposestack(stack s);
void makeempty(stack s);
elementtype top(stack s);
void pop(stack s);
elementtype topandpop(stack s);
#endif /*stack.h*/
stack creatstack(int maxelement)
堆疊的一些理解
堆疊是一種執行 後進先出 演算法的資料結構。設想有乙個直徑不大 一端開口一端封閉的竹筒。有若干個寫有編號的小球,小球的直徑比竹筒的直徑略小。現在把不同編號的小球放到竹筒裡面,可以發現一種規律 先放進去的小球只能後拿出來,反之,後放進去的小球能夠先拿出來。所以 先進後出 就是這種結構的特點。堆疊就是這...
關於堆,棧的一些東西
堆和棧的區別 1 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 u 1 棧區 stack 由編譯器自動分配釋放 由編譯器在需要的時候分配,在不需要的時候自動清除 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。u 2 堆區 heap 一般由程式...
近期的一些更新
xgcalendar 最新還是做了一些更新 2009 11 23 2 在demo中新增日程時可選擇日程的顏色分類 2009 11 24 3 新增對不同時區的處理,伺服器端也要對應做調整 2009 11 25 4 修正了本地快取在邊緣處理不當的 2009 11 25 5 修正了緩衝處理的幾個bug 2...