資料結構小結 順序棧

2021-08-05 19:12:13 字數 1158 閱讀 7970

棧是資料結構中的一種儲存方式,和棧記憶體沒有什麼關係,它可以存在棧記憶體上,也可以存在堆記憶體上,此篇介紹的順序棧棧就是存在棧記憶體上的。

順序棧顧名思義,就是存在記憶體上連續一段位址空間內的棧,和順序表差不多。

棧有乙個要求就是先入後出,後入先出

結構很簡單:

#define size 10

typedef

int stackdata;

typedef

struct _stack

stack;

這麼用呢,第一步要置空棧,也就相當於給它初始化了:

int initstack (stack

*s)

s->top =

-1;

}

因為是順序棧,是基於陣列來儲存資料的,所以它的空間大小是固定的,所以必要要判斷棧滿、棧空這兩種情況:

//判斷棧空

int stackempty (stack

*s) return s->top ==-1;

}//判斷棧滿

int stackfull (stack

*s) return s->top == (size-

1);}

對棧資料的操作一定要符合先入後出的原則:

入棧或者叫壓棧其實就是在尾部新增資料:

int push (stack

*s, stackdata x)

// 判斷是否滿棧

if (stackfull(s))

s->

data

[++s->top]

= x;

return true;

}

而出棧也就是從尾部將資料取出來丟掉:

//這裡的*x是用來儲存出棧的值

int pop (stack

*s, stackdata *x)

// 判斷是否空棧

if (stackempty(s))

*x = s->

data

[s->top--];

return true;

}

資料結構 棧小結

1陣列棧 2動態陣列棧 動態陣列棧有兩種實現方法,一種是每次擴充1位並進行複製,插入n個元素的時間複雜度位o n 2 1 2 n 一種是每次擴充2倍並進行複製,插入n個元素的時間複雜度為0 n 1 2 4 8.n,此處使用這種最優化的方案。3鍊錶棧 4最小棧的優化版 5棧的逆置 只用push和top...

資料結構 順序棧

編寫乙個程式,實現順序棧 假設棧中元素型別為char 的各種基本運算。並完成下面功能 1 初始化棧s 2 判斷棧s是否非空 3 依次進棧元素a,b,c,d,e 4 判斷棧s是否非空 5 輸出棧長度 6 輸出從棧頂到棧底元素 7 輸出出棧序列 8 判斷棧s是否非空 9 釋放棧。include incl...

資料結構 順序棧

構造乙個順序棧 當輸入9999時,結束入棧操作 輸出棧中元素,顯示棧頂元素,刪除棧頂元素 include include include define stack init size 100 define ok 1 define error 0 typedef int selemtype 順序棧結構...