棧的C 實現

2021-07-11 02:18:01 字數 2602 閱讀 6440

棧的特點是先進後出(lifo),就像一疊盤子一樣,你只能從最上面取。

這裡介紹幾個基本的功能:是否為空棧(empty),新增乙個元素(push),取最頂元素(top),彈出乙個元素(pop),輸出棧中的元素(out)。c++中有棧容器,用到時只需#include即可。這裡,我們自己建立乙個棧類,乙個int型的棧,再採用模板形式將其擴充套件。

該類應該包含的資料成員有指向棧頂元素的索引—mytop,以及乙個陣列用來儲存棧中的元素。函式成員有上述幾個功能empty…**如下:

#include using namespace std;

const

int stack_capacity = 128;

typedef int stackelement;

class stack

;

具體函式實現在stack.cpp中:

#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 模板詳解 好了,下面開...