程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言實現使用靜態數組來模擬棧結構

C語言實現使用靜態數組來模擬棧結構

編輯:關於C語言

C語言實現使用靜態數組來模擬棧結構


在數據結構中,棧是一種很重要的存在。這是一種先進後出的結構,就像一個“死胡同”一樣。今天我們先用最簡單的方式靜態數組來模擬棧。代碼上傳至 https://github.com/chenyufeng1991/Stack_StaticArray。

(1)聲明棧的大小,數組,和一個棧頂指針。棧頂指針可以取出棧頂的數據。

 

#define STACK_SIZE 50

static int stack[STACK_SIZE];
static int top_element = -1;

(2)壓入元素,當棧還沒有滿的時候,可以把元素壓入棧頂。

 

 

//壓入元素
void push(int value){
    if (!isFull()) {
        stack[++top_element] = value;
    }
}

(3)彈出元素,當棧不為空時,彈出棧頂元素。指針下移,棧元素-1.

 

 

//彈出元素
void pop(){
    if (!isEmpty()) {
        top_element--;
    }
}

(4)取頂部元素,注意和(3)中的彈出元素不同。取頂部元素沒有改變棧結構。

 

 

//取頂部元素
int top(){
    if (!isEmpty()) {
        return stack[top_element];
    }

    return -32768;
}

(5)判斷棧是否為空,直接根據棧頂指針判斷。

 

 

//判斷棧是否為空
int isEmpty(){
    return top_element == -1;
}

 

 

(6)判斷棧是否已滿

 

//判斷棧是否已滿
int isFull(){
    return top_element == STACK_SIZE - 1;
}

 

(7)打印棧元素,只能通過從頂部開始打印

 

//從頂部開始打印棧元素
void printStack(){

    int i = top_element;
    printf("%s函數執行,打印出靜態數組棧裡面的值:\n",__FUNCTION__);
    if (i == -1) {
        printf("這是一個空棧\n");
    }else{
        while (i != -1) {
            printf("%d ",stack[i--]);
        }
        printf("\n");
    }
}


 

(8)測試代碼

 

int main(int argc, const char * argv[]) {

    push(4);push(6);push(1);push(9);push(2);push(8);
    printStack();
    printf("\n");

    pop();pop();pop();pop();
    printf("經過pop後棧的元素為:\n");
    printStack();
    printf("\n");

    printf("top元素的值:%d\n",top());

    return 0;
}

 

 



 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved