
- 使用C語言實現資料結構教程
- 使用C語言實現資料結構 - 首頁
- 使用C語言實現資料結構 - 概述
- 使用C語言實現資料結構 - 環境配置
- 使用C語言實現資料結構 - 演算法
- 使用C語言實現資料結構 - 概念
- 使用C語言實現資料結構 - 陣列
- 使用C語言實現資料結構 - 連結串列
- 使用C語言實現資料結構 - 雙向連結串列
- 使用C語言實現資料結構 - 迴圈連結串列
- 使用C語言實現資料結構 - 棧
- 使用C語言實現資料結構 - 表示式解析
- 使用C語言實現資料結構 - 佇列
- 使用C語言實現資料結構 - 優先佇列
- 使用C語言實現資料結構 - 樹
- 使用C語言實現資料結構 - 雜湊表
- 使用C語言實現資料結構 - 堆
- 使用C語言實現資料結構 - 圖
- 使用C語言實現資料結構 - 搜尋技術
- 使用C語言實現資料結構 - 排序技術
- 使用C語言實現資料結構 - 遞迴
- 使用C語言實現資料結構 - 有用資源
- 使用C語言實現資料結構 - 快速指南
- 使用C語言實現資料結構 - 有用資源
- 使用C語言實現資料結構 - 討論
使用C語言實現資料結構 - 棧
概述
棧是一種資料結構,它只允許在一端進行資料操作。它只允許訪問最後插入的資料。棧也被稱為後進先出 (LIFO) 資料結構,並且入棧和出棧操作以這樣一種方式相關聯:只有最後入棧(新增到棧中)的項才能出棧(從棧中移除)。
棧的表示

在本文中,我們將使用陣列來實現棧。
基本操作
以下是棧的兩個主要操作。
入棧 (Push) − 將元素壓入棧頂。
出棧 (Pop) − 將元素彈出棧頂。
棧還支援一些其他操作,如下所示。
取頂 (Peek) − 獲取棧頂元素。
是否已滿 (isFull) − 檢查棧是否已滿。
是否為空 (isEmpty) − 檢查棧是否為空。
入棧操作
每當一個元素被壓入棧時,棧會將該元素儲存在儲存區的頂部,並增加頂部索引以供後續使用。如果儲存區已滿,通常會顯示錯誤訊息。

// Operation : Push // push item on the top of the stack void push(int data) { if(!isFull()){ // increment top by 1 and insert data intArray[++top] = data; } else { printf("Cannot add data. Stack is full.\n"); } }
出棧操作
每當需要從棧中彈出元素時,棧會從儲存區的頂部檢索該元素,並減少頂部索引以供後續使用。

// Operation : Pop // pop item from the top of the stack int pop() { //retrieve data and decrement the top by 1 return intArray[top--]; }
示例
StackDemo.c
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> // size of the stack int size = 8; // stack storage int intArray[8]; // top of the stack int top = -1; // Operation : Pop // pop item from the top of the stack int pop() { //retrieve data and decrement the top by 1 return intArray[top--]; } // Operation : Peek // view the data at top of the stack int peek() { //retrieve data from the top return intArray[top]; } //Operation : isFull //return true if stack is full bool isFull(){ return (top == size-1); } // Operation : isEmpty // return true if stack is empty bool isEmpty(){ return (top == -1); } // Operation : Push // push item on the top of the stack void push(int data) { if(!isFull()){ // increment top by 1 and insert data intArray[++top] = data; } else { printf("Cannot add data. Stack is full.\n"); } } main() { // push items on to the stack push(3); push(5); push(9); push(1); push(12); push(15); printf("Element at top of the stack: %d\n" ,peek()); printf("Elements: \n"); // print stack data while(!isEmpty()){ int data = pop(); printf("%d\n",data); } printf("Stack full: %s\n" , isFull()?"true":"false"); printf("Stack empty: %s\n" , isEmpty()?"true":"false"); }
輸出
如果我們編譯並執行上述程式,它將產生以下輸出:
Element at top of the stack: 15 Elements: 15 12 1 9 5 3 Stack full: false Stack empty: true
廣告