資料結構之順序棧

2021-06-22 07:20:22 字數 1654 閱讀 1914

前面我們學習了順序鍊錶,我們可能會覺得順序鍊錶有啥用呢?基本都是要被淘汰了用法。

呵呵,俗話說:存在的即是合理的。下面我來炫炫它的用法,請睜大你的眼睛,下面是見證奇蹟的時刻。

第六個例子,順序棧的實現:

標頭檔案要包含兩部分,乙個是我們先前實現的順序表,不清楚,出門右轉,看前面的文章

標頭檔案

#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...