C++實現順序棧類

來源:互聯網
上載者:User

  堆棧(英文:stack),也可直接稱棧。在電腦科學中,棧是一種特殊的串列形式的資料結構,它的特殊之處在於只能允許在鏈結串列或陣列的一端(稱為堆棧頂端指標,英文為top)進行加入資料(push)和輸出資料(pop)的運算。

  另外堆棧也可以用一維陣列或連結串列的形式來完成。

  由於堆棧資料結構只允許在一端進行操作,因而按照後進先出(LIFO, Last In First Out)的原理運作。

  堆棧資料結構使用兩種基本操作:推入(push)和彈出(pop)。

 

標頭檔

#ifndef sq_stack_h#define sq_stack_h#define STACK_INIT_SIZE 10 //初始棧的最大長度#define STACKINCREMENT 10 //每次新增的棧的長度template <class DataType>class sq_stack{public:    sq_stack();    void Push(DataType e); //插入為e的新棧頂元素    void Pop(); //刪除棧頂元素    DataType Top(); //取出棧頂元素    bool Empty(); //判斷棧是否為空白:空返回1    ~sq_stack(); //棧被銷毀private:    DataType *base; //棧尾    DataType *top; //棧頂    int stacksize;};#endif

 

源檔案以及測試代碼

#include "sq_stack.h"#include <iostream>using namespace std;template <class DataType>sq_stack<DataType>::sq_stack(){    base = new DataType[STACK_INIT_SIZE];    if(!base) exit(1);    top=base;    stacksize=STACK_INIT_SIZE;}template <class DataType>void sq_stack<DataType>::Push(DataType e){    if(top-base>=stacksize-1){        base=(DataType*)realloc(base,(stacksize+STACKINCREMENT)*sizeof(DataType));        if(!base) exit(1);        top=base+stacksize-1;        stacksize+=STACKINCREMENT;    }    *top++=e;}template <class DataType>void sq_stack<DataType>::Pop(){    if(top==base) exit(1);    top--;}template <class DataType>DataType sq_stack<DataType>::Top(){    if(top==base) return NULL;    return *(top-1);}template <class DataType>bool sq_stack<DataType>::Empty(){    return top==base? 1:0;}template <class DataType>sq_stack<DataType>::~sq_stack(){    if(base) free(base);    top = base = NULL;    stacksize = 0;}int main(){    sq_stack<int> st;    for(int i=1;i<=20;i++)        st.Push(i);    for(int i=1;i<=20;i++)    {        cout<<st.Top()<<" ";        st.Pop();        if (i%5 == 0){cout<<endl;}    }    system("pause");    return 0;}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.