這裡使用靜態陣列實現堆疊的基本操作,堆疊的知識比較簡單,基本操作**基本都給出了,這裡使用visual studio 進行**,可以照搬到到微控制器使用
//堆疊學習**:靜態陣列實現
//author:鬼谷
//#include "stdio.h"
//堆疊儲存的資料型別
#define stack_type int
//堆疊的長度
#define stack_len 10
//堆疊的狀態
#define stack_full 0
#define stack_no_full 1
#define stack_empty 0
#define stack_no_empty 1
//堆疊操作狀態
#define success 0
#define failed 1
//堆疊定義
static stack_type stack_1[stack_len];
static
int top_elemnt = -1;
//常用資料型別定義
#define u8 unsigned char
//棧空
u8 is_stack_empty(void)
//棧滿
u8 is_stack_full(void)
//壓棧
u8 push(stack_type data)
//出棧
u8 pop(stack_type *data)
//訪問堆疊頂元素但是不改變堆疊的狀態
u8 top(stack_type *data)
int main(void)
; for (cnt = 0; cnt < stack_len + 10; cnt++)
//測試用,讀取棧裡的元素,工程應用不用
for (cnt = 0; cnt < stack_len ; cnt++)
printf("top_element = %d\r\n",top_elemnt);
for (cnt = 0; cnt < stack_len + 10; cnt++)
printf("top_element = %d\r\n", top_elemnt);
while (1);
return
0;}
堆疊靜態儲存區
1 從靜態儲存區域分配 內存在程式編譯時就已經分配好,這塊內存在程式的整個執行期間都存在。速度快 不容易出錯,因為有系統會善後。例如全域性變數,static變數等。靜態變數分為區域性靜態變數和全域性靜態變數,注意區分,區域性靜態變數不是全域性變數 靜態全域性變數的作用域僅限於當前原始檔,靜態區域性變...
靜態記憶體和堆疊
一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。它主要存放靜態資料 全域性資料和常量。棧區 在執行函式時,函式內區域性變數的儲存單元都可以在...
順序堆疊(陣列)
完成品 include include typedef struct stack snode struct stack snode createstack int maxsize 建立堆疊函式 bool isfull snode s 檢查棧是否滿 bool push int data1,snode ...