大概把指標和陣列介紹完以後,就可以帶到所謂的堆疊了
那麼什麼是堆疊呢?
就是FILO(First In Last Out),先進後出
最先進去的元素會是最後一個才出來
那麼依照慣例就直接來囉
概念是共分為4個Function且架構盡量相同
顧名思義 看陣列是否為空(是否都pop出去了)
看陣列是否滿了(是否都push進陣列)
將資料放入陣列中
將資料從陣列中取出
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
#define false 0
#define true 1
int isEmpty(int stack[], int top){
if(top == -1){
return true;
}
else{
return false;
}
}
int isFull(int stack[], int top){
if(top==(SIZE-1)){
return true;
}
else{
return false;
}
}
int push(int stack[], int element, int *topp){
while(1){
if(isFull(stack, *topp)){
printf("isFull now\n");
break;
}
else{
//*topp=++*topp;
stack[++*topp]=element;
element--;
printf("push = %d \n",stack[*topp]);
}
}
}
int pop(int stack[], int *element, int *topp){
while(1){
if(isEmpty(stack, *topp)){
printf("isEmpty now\n");
break;
}
else{
*element = stack[*topp];
printf("pop = %d\n",*element);
*topp = *topp -1;
}
}
}
int main(){
int stack[SIZE];
int top = -1; //陣列的頭 也就是堆疊的頂端
int element = 10;
push(stack,element,&top);
printf("top = %d\n",top);
pop(stack,&element,&top);
}