#include <stdio.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int top;
}Stack;
void InitStack(Stack &); //初始化
int StackEmpty(Stack); //判斷堆疊是否為空
bool Push(Stack & , int e); //入堆疊
int Pop(Stack & , int &); //出堆疊
int TopData(Stack , int); //讀取堆疊頂資料
int main(void){
Stack s;
InitStack(s);
switch(StackEmpty(s)){
case 0:
printf("堆疊空.\n");
break;
case 1:
printf("堆疊滿.\n");
break;
case 2:
printf("堆疊不為空且不滿.\n");
}
Push(s,1);
Push(s,2);
Push(s,3);
Push(s,4);
int e = 0;
printf("出堆疊的資料是:%d\n",Pop(s,e));
printf("出堆疊的資料是:%d\n",Pop(s,e));
printf("堆疊頂資料為:%d\n",TopData(s,e));
return 0;
}
//初始化
void InitStack(Stack &s){
s.top = -1;
}
//判斷堆疊是否為空
int StackEmpty(Stack s){
if(s.top = -1){
return 0;
}else if(s.top == MaxSize - 1){
s.top == MaxSize - 1;
return 1;
}else{
return 2;
}
}
//入堆疊
bool Push(Stack &s , int e){
if(s.top == MaxSize - 1){
printf("堆疊滿");
return false;
}
s.data[++s.top] = e;
return true;
}
//出堆疊
int Pop(Stack &s , int &e){
if(s.top == -1){
printf("堆疊空");
return 0;
}
e = s.data[s.top--];
return e;
}
//讀取堆疊頂資料
int TopData(Stack s , int e){
if(s.top == -1){
printf("堆疊空");
return 0;
}
e = s.data[s.top];
return e;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/77813.html
標籤:其他
上一篇:單鏈表操作(帶頭節點)
下一篇:頭插法和尾插法建立單鏈表
