最上面的資料去做處理。 而他只有兩種操作模式:1.POP 2.PUSH
POP就是取出堆疊最上層的資料,而PUSH就是塞入資料至資料最上層。
如圖所示。
本篇是利用Array達到stack的功能。
簡單的範例如下所示:
一開始先決定堆疊大小
分別PUSH a b c
再PUSH則會告知堆疊已滿 (因為超出堆疊限定大小)
POP時顯示被POP的資料
可列出目前堆疊資料
=========StackObject.h============
#ifndef STACKOBJECT_H
#define STACKOBJECT_H
#include <iostream>
class StackObject{
public:
StackObject();
~StackObject();
void Add();
void Delete();
void List();
private:
int Top;
char *Arr;
int MAX;
};
#endif
=========StackObject.cpp============
#include "StackObject.h"
using namespace std;
StackObject::StackObject(){
Top=-1;
cout<<"請輸入堆疊大小"<<endl;
cin>>MAX;
Arr=new char[MAX];
}
StackObject::~StackObject(){
delete []Arr;
}
void StackObject::Add(){
if(Top==MAX-1){
cout<<"堆疊已滿"<<endl;
}else{
Top++;
cout<<"請輸入字元"<<endl;
cin>>Arr[Top];
cout<<"輸入完畢謝謝!"<<endl;
}
}
void StackObject::Delete(){
if(Top<0){
cout<<"堆疊為空,並無資料"<<endl;
}else{
cout<<"刪除的資料為:"<<Arr[Top]<<endl;
Top--;
}
}
void StackObject::List(){
if(Top<0){
cout<<"堆疊為空,並無資料"<<endl;
}else{
for(int i=0;i<Top+1;i++){
cout<<"第"<<i+1<<"筆資料為:"<<Arr[i]<<endl;
}
}
}
=========main============
#include <iostream>
#include "StackObject.h"
using namespace std;
int main()
{
char option;
StackObject stack;
while(1){
cout<<"=========="<<endl;
cout<<"1.PUSH"<<endl;
cout<<"2.POP"<<endl;
cout<<"3.List All Data"<<endl;
cout<<"4.Quit"<<endl;
while(cin.get(option)&&option=='\n');
switch(option){
case '1':stack.Add();
break;
case '2':stack.Delete();
break;
case '3':stack.List();
break;
case '4':
system("PAUSE");
return 0;
}
}
}
by Victor





沒有留言:
張貼留言