棧的特點是先進後出(lifo),就像一疊盤子一樣,你只能從最上面取。
這裡介紹幾個基本的功能:是否為空棧(empty),新增乙個元素(push),取最頂元素(top),彈出乙個元素(pop),輸出棧中的元素(out)。c++中有棧容器,用到時只需#include即可。這裡,我們自己建立乙個棧類,乙個int型的棧,再採用模板形式將其擴充套件。
該類應該包含的資料成員有指向棧頂元素的索引—mytop,以及乙個陣列用來儲存棧中的元素。函式成員有上述幾個功能empty…**如下:
具體函式實現在stack.cpp中:#include using namespace std;
const
int stack_capacity = 128;
typedef int stackelement;
class stack
;
測試程式:#include "stack.h"
stack::stack()
bool stack::empty() const
void stack::push(const stackelement &value)
mytop++;
myarray[mytop] = value;
}stackelement stack::top()const
else
return myarray[mytop];
}void stack::pop()
else
mytop--;
}void stack::out(ostream & o)const
else
for (int i = mytop; i >= 0; i--)
}
#include "stack.h"
int main()
else
cout
<< "not empty!"
<< endl;
for (int i = 0; i < 5;i++)
s.out(cout);
s.pop();
s.out(cout);
return
0;}
測試**:#include
using
namespace
std;
const
int stack_capacity = 128;
template
class stack
;template
stack::stack()
template
bool stack::empty() const
template
void stack::push(const stackelement &value)
mytop++;
myarray[mytop] = value;
}template
stackelement stack::top()const
else
return myarray[mytop];
}template
void stack::pop()
else
mytop--;
}template
void stack::out(ostream & o)const
else
for (int i = mytop; i >= 0; i--)
}
測試結果:#include "stack.h"
int main()
else
cout
<< "not empty!"
<< endl;
for (int i = 0; i < 5;i++)
s.out(cout);
s.pop();
s.out(cout);
stack s2;
if (s2.empty())
else
cout
<< "not empty!"
<< endl;
for (char i = 'a'; i < 'e'; i++)
s2.out(cout);
s2.pop();
s2.out(cout);
return
0;}
新增乙個應用,將十進位制數轉換為二進位制:例如26轉換為2進製的過程是:26/2=13餘0,13/2=6餘1,6/2=3餘0,3/2=1餘1,1/2=0餘1,那麼將所有的餘數倒著寫就是最終的結果:11010,先得到的餘數最後寫出來,最後面的餘數第乙個寫出來,這就符合了棧的特點,後進先出。利用我們上面寫的stack類來寫這個應用程式,**如下:
#include "stack.h"
int main()
s.out(cout);
return
0;}
C 棧的實現
2009 04 15 11 40 順序棧 seqential stack 就是用順序儲存方式儲存的棧。在下面順序棧的類定義中是用陣列儲存的。用stacka maxsize 儲存,maxsize是最大允許存放元素的個數。變數top表示棧頂部元素的位置,初始值為 1,表示棧空.我們首先給出順序棧的抽象資...
c 棧的實現
棧的實現 供學習c 人員使用 define stack size 10000 巨集定義 include 標頭檔案 using namespace std template struct node 無引數的的建構函式 node elemtypeitem,node link null 已知資料元素值和指...
棧的C 實現
眾所周知,棧是一種最常用的資料結構,棧在實現上可以用陣列和結構體來實現,下面用結構體來實現棧。考慮到資料型別的通用性,這裡使用模板進行編寫,便於以後的學習過程中進行使用,不了解模板的同學,可以去網上了解一下c 的模板的使用。這裡有一篇關於c 模板類的部落格,可以先了解一下 c 模板詳解 好了,下面開...