資料結構-堆疊-陣列實現
阿新 • • 發佈:2018-11-27
什麼是堆疊?
堆疊形如陣列,是一種資料儲存方式.
堆疊存數像彈夾裝彈
子彈從頭開始裝,最先裝進去的,最後出來.
堆疊也是同樣道理,最先裝入的內容,最後出來,就是所謂的先進後出.
/*
* 堆 陣列實現
*
* */
#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));
}
}