前面我們學習了順序鍊錶,我們可能會覺得順序鍊錶有啥用呢?基本都是要被淘汰了用法。
呵呵,俗話說:存在的即是合理的。下面我來炫炫它的用法,請睜大你的眼睛,下面是見證奇蹟的時刻。
第六個例子,順序棧的實現:
標頭檔案要包含兩部分,乙個是我們先前實現的順序表,不清楚,出門右轉,看前面的文章
標頭檔案
#ifndef _seqstack_h_
#define _seqstack_h_
typedef void seqstack;
seqstack* seqstack_create(int capacity);
void seqstack_destroy(seqstack* stack);
void seqstack_clear(seqstack* stack);
int seqstack_length(seqstack* stack);
int seqstack_capacity(seqstack* stack);
int seqstack_push(seqstack* stack, void* node);
void* seqstack_pop(seqstack* stack);
void* seqstack_top(seqstack* stack);
#endif
實現檔案
#include "seqstack.h"
#include "seqlist.h"
#include seqstack* seqstack_create(int capacity)
void seqstack_destroy(seqstack* stack)
void seqstack_clear(seqstack* stack)
int seqstack_length(seqstack* stack)
int seqstack_capacity(seqstack* stack)
int seqstack_push(seqstack* stack, void* node)
void* seqstack_pop(seqstack* stack)
void* seqstack_top(seqstack* stack)
有木有覺得很驚訝!!沒有錯,就是這麼的簡單!
測試檔案
#include #include #include "seqstack.h"
int main(int argc, char *argv)
; int i = 0;
printf("capacity = %d\n", seqstack_capacity(stack));
for (i = 0; i < 5; i++)
printf("length = %d\n", seqstack_length(stack));
while(seqstack_length(stack) > 0)
system("pause");
return 0;
}
好了,炫技完畢!是不是覺得很有用呢?這裡說個小技巧,
我們入棧的時候是直接把順序表的尾部當作棧頂,
這樣可以避免入棧的時候移動大量資料,ok!順序棧介紹完畢!
資料結構之順序棧
棧的順序儲存結構用一組位址連續的儲存單元 陣列,依次存放自棧底到棧頂的資料元素。最簡單的一種棧的寫法如下 define maxsize 100 int stack maxsize int top 棧頂位置 void initstack void clearstack int gettop int e...
資料結構之順序棧
include include include define n 32 typedef struct stack seqstack t 建立堆疊 seqstack t creat empty seqstack 建立乙個空的順序棧 申請記憶體空間 並將棧頂初始化為 1 int stack is emp...
資料結構之順序棧
棧是基本的資料結構之一,利用一維陣列或鍊錶作為儲存結構,實現 入棧 出棧,讀取棧頂元素和判斷棧是否為空等操作。與線性表最大的不同之處是,棧只允許在一端進行插入和刪除操作。順序棧的資料結構很簡單,變數top用來記錄棧頂位置,初始化為 1,陣列data用來儲存資料。templateclass seqst...