順序棧的基本操作(入棧和出棧)及C語言實現詳解
阿新 • • 發佈:2018-12-17
棧,可以理解為遵循“後入先出”原則的線性表,因此棧結構可以採用順序表或連結串列實現。
順序棧的實現採用的是順序表,也就是陣列。
順序棧的實現思想是:在陣列中設定一個隨時指向棧頂元素的變數(一般命名為 top ),當 top 的值為 -1 時,說明陣列中沒有資料,即棧中沒有資料元素,為“空棧”;只要資料元素進棧,top 就加 1 ;資料元素出棧, top 就減 1 。
例如,使用順序棧的儲存結構將('a','b','c','d')四個元素逐個壓棧並輸出棧頂元素。
實現程式碼:
輸出結果:
彈棧元素:d
彈棧元素:c
彈棧元素:b
彈棧元素:a
空棧
順序棧的實現採用的是順序表,也就是陣列。
順序棧的實現思想是:在陣列中設定一個隨時指向棧頂元素的變數(一般命名為 top ),當 top 的值為 -1 時,說明陣列中沒有資料,即棧中沒有資料元素,為“空棧”;只要資料元素進棧,top 就加 1 ;資料元素出棧, top 就減 1 。
例如,使用順序棧的儲存結構將('a','b','c','d')四個元素逐個壓棧並輸出棧頂元素。
實現程式碼:
#include <stdio.h> //元素elem進棧 int push(char* a,int top,char elem){ a[++top]=elem; return top; } //資料元素出棧 int pop(char * a,int top){ if (top==-1) { printf("空棧"); return -1; } printf("彈棧元素:%c\n",a[top]); top--; return top; } int main() { char a[100]; int top=-1; top=push(a, top, 'a'); top=push(a, top, 'b'); top=push(a, top, 'c'); top=push(a, top, 'd'); top=pop(a, top); top=pop(a, top); top=pop(a, top); top=pop(a, top); top=pop(a, top); return 0; }
彈棧元素:c
彈棧元素:b
彈棧元素:a
空棧