堆疊之靜態陣列

2021-07-10 10:59:41 字數 1196 閱讀 6930

這裡使用靜態陣列實現堆疊的基本操作,堆疊的知識比較簡單,基本操作**基本都給出了,這裡使用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 ...