1. 程式人生 > >資料結構-堆疊-陣列實現

資料結構-堆疊-陣列實現

什麼是堆疊?

堆疊形如陣列,是一種資料儲存方式.
堆疊存數像彈夾裝彈
這裡寫圖片描述
子彈從頭開始裝,最先裝進去的,最後出來.
堆疊也是同樣道理,最先裝入的內容,最後出來,就是所謂的先進後出.

/*
 * 堆 陣列實現
 *
 * */

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

//定義堆疊
struct SNode {
    int *data;
    int top;
    int maxSize;
};
typedef struct SNode * Stack;

//建立一個堆疊
Stack CreakStack(int maxSize){ Stack s=(Stack)malloc(sizeof(struct SNode)); s->data=(int *)malloc(maxSize * sizeof(int)); s->maxSize=maxSize; s->top=-1; return s; } //判斷是否已滿 bool isFull(Stack s){ return (s->top==s->maxSize-1); } //判斷是否為空 bool isEmpty(Stack s){ return
(s->top==-1); } //壓棧 bool Push(Stack s,int num){ if(isFull(s)){ printf("堆疊滿"); return false; } else{ s->data[++(s->top)]=num; return true; } } //出棧 int Pop(Stack s){ if(isEmpty(s)){ printf("堆疊空"); return NULL; } else{ return
(s->data[(s->top)--]); } } //測試 int main(){ Stack stack=CreakStack(10); Pop(stack); for(int i=0;i<10;i++){ Push(stack,i); } Push(stack,11); for(int i=0;i<10;i++){ printf("%d ",Pop(stack)); } }