資料結構之棧

2021-07-05 05:59:27 字數 2229 閱讀 7829

資料結構之棧

本文討論棧的陣列實現。

棧需要有如下幾個屬性:

-棧的容量(capacity)

-棧頂指標

-儲存棧元素的陣列

根據這幾個屬性可以定義乙個棧結構體:

struct stackrecord

;

然後定義棧的操作,一般可以包含如下幾個:

-棧的建立:stack createstack(int size);

-棧的銷毀:void disposestack(stack s);

-判斷棧空:int isempty(stack s);

-判斷棧滿:int isfull(stack s);

-進棧:void push(datatype data, stack s);

-出棧:void pop(stack s);

-檢視棧頂元素:datatype top(stack s);

-檢視棧頂元素並彈出:datatype topandpop(stack s);

下面是完整的實現**:

stack.h:

#ifndef stack_h

#define stack_h

#define minstacksize 5

struct stackrecord;

typedef int datatype;

typedef struct stackrecord *stack;

int isempty(stack s);

int isfull(stack s);

stack createstack(int size);

void disposestack(stack s);

void push(datatype data, stack s);

datatype top(stack s);

void pop(stack s);

datatype topandpop(stack s);

#endif

stack.c:

#include

#include

"stack.h"

struct stackrecord

;stack createstack(int size)

s = malloc(sizeof(struct stackrecord));

if (s ==

null)

s->

array

= malloc(sizeof(datatype) * size);

if (s->

array

==null)

s->capacity = size;

s->topofstack =-1;

return s;

}void disposestack(stack s)

}int isempty(stack s)

int isfull(stack s)

void push(datatype data, stack s)

else

}void pop(stack s)

else

}datatype top(stack s)

exit(0);

}datatype topandpop(stack s)

exit(0);

}

usestack.c:

#include 

#include "stack.h"

void main()

for (int i = 0; i < 20; ++i)

}

參考:資料結構與演算法分析:c語言描述(第二版)

資料結構之棧結構

棧結構是一種filo first in last out 的批量資料儲存結構。其特點是先進後出,後來者居上 棧的基本屬性 棧記憶體 棧頂標記 棧的當前元素個數 萬金油屬性 size 棧的基本操作 萬金油的的操作 根據實現的不同將棧結構分為兩種 1.鏈式棧 2.陣列 利用有表頭鍊錶的頭插法來完成棧的功...

資料結構之棧

4.8.2 四則運算表示式求值 程式如下所示 include include include 定義結點型別 typedef struct node node,pnode 定義棧的抽象資料型別 typedef struct stack stack,pstack 函式宣告 對棧進行初始化的函式 void...

資料結構之棧

決定採用何種方式來儲存資料是非常重要的,這樣便於檢索資料時,資料會自動按照某種規定的順序給出。棧是檢索資料的一種方式,它檢索元素的順序與儲存元素的順序相反。棧 先進後出。要把元素儲存到棧中,就 壓入 元素,要刪除棧中的元素,就 彈出 元素。有時候,可以通過檢查棧頂的元素 而不是實際去刪除它 來獲取元...