亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • 棧是一種機制(棧機制)
    查看全部
    0 采集 收起 來源:棧介紹

    2018-12-18

  • 棧類要求:

    MyStack(int size);

    ~MyStack();

    bool stackEmpty();

    bool stackFull();

    void clearStack();

    int stackLength();

    void push(char elem);

    char pop(char &elem);

    void stackTraverse();

    查看全部
    0 采集 收起 來源:實例介紹

    2018-11-19

  • MyStack.h 文件

    #ifndef MYSTACK_H

    #define MYSTACK_H

    class MyStack

    {

    public:

    MyStack(int size);//分配內存初始化??臻g,設定棧容量,棧頂

    ~MyStack();//回收棧空間內存

    bool stackEmpty();//判斷棧是否為空,空返回ture,非空返回false

    bool stackFull();//判定棧是否已經滿,滿返回ture,不滿返回false

    void clearStack();//清空棧

    int stackLength(); //已有的元素個數

    void push(char elem);//元素入棧,棧頂上升

    char pop();//元素出棧,棧頂下降

    bool pop(char &elem)

    void stackTraverse(bool);//遍歷棧中所有元素


    //目的:掌握棧的實現原理和運行機制

    private:

    char *m_pBuffer;//棧空間指針

    int m_iSize;//棧容量

    int m_iTop;//棧頂,棧中元素個數

    };

    Mystack.ccp

    #include "MyStack.h"

    #include <iostream>

    MyStack::MyStack(int size)//分配內存初始化??臻g,設定棧容量,棧頂

    {

    ? ?m_iSize = size;

    ? ?m_pBuffer = new char[size];

    ? ?m_iTop = 0;

    }


    ~MyStack::MyStack()//回收??臻g內存

    {

    delete []m_pBuffer;

    m_pBuffer = NULL;

    }


    bool MyStack::stackEmpty()//判斷棧是否為空,空返回ture,非空返回false

    {

    ? ? if(0 == m_iTop)

    ? ? {

    ? ? ? ? return true;

    ? ? }

    ? ? return false;

    }


    bool MyStack::stackFull()//判定棧是否已經滿,滿返回ture,不滿返回false

    {

    ? ? if(m_iTop >= m_iSize)

    ? ? {

    ? ? ? ? return true;

    ? ? }

    ? ? return false;

    }


    void MyStack::clearStack()//清空棧

    {

    ? ? m_iTop = 0;

    }


    int MyStack::stackLength(); //已有的元素個數

    {

    ? ? return m_iTop;

    }


    void MyStack::push(char elem);//元素入棧,棧頂上升

    {

    ? ? if(stackFull())

    ? ? {

    ? ? ? ? return false;

    ? ? }

    ? ? m_pBuffer[m_iTop] = elem;

    ? ? m_itop++;

    ? ? return true;

    }

    char MyStack:: pop()//元素出棧,棧頂下降

    {

    ? ? if(stackEmpty())

    ? ? {

    ? ? ? ? throw 1;

    ? ? }else

    ? ? {

    ? ? ? ? m_iTop--;

    ? ? ? ? m_pBuffer[m_iTop];

    ? ? }

    ? ? return m_pBuffer[m_iTop];

    }


    bool MyStack::pop(char &elem)

    {

    ? ? if(stackEmpty())

    ? ? {

    ? ? ? ? return false;

    ? ? }else

    ? ? {

    ? ? ? ? m_iTop--;

    ? ? ? ? elem = m_pBuffer[m_iTop];

    ? ? }

    ? ? return true;

    }

    void MyStack::stackTraverse(bool isFromButtom)//遍歷棧中所有元素

    {

    ? ? if(isFromButtom)

    ? ? {

    ? ? ? ? for(int i=0;i<m_iTop;i++)

    ? ? ? ? {

    ? ? ? ? ? ? cout<<m_pBuffer[i]<<",";

    ? ? ? ? }

    ? ? }else

    ? ? {

    ? ? ? ? for(int i=m_iTop-1;i>=0;i--)

    ? ? ? ? {

    ? ? ? ? ? ? cout<<m_pBuffer[i]<<",";

    ? ? ? ? }

    ? ? }

    }



    #include <iostream>

    #include "MyStack.h"

    #include "MyStack.cpp"

    using namespace std;


    int main()

    {

    ? ? MyStack *pStack=new MyStack(5);

    ? ? delete pStack;

    ? ? pStack=NULL;

    ? ? pStack->push('h');//低

    ? ? pStack->push('e');

    ? ? pStack->push('l');

    ? ? pStack->push('l');

    ? ? pStack->push('0');//頂

    ? ??

    ? ? pStack->stackTraverse(true);

    ? ? char elem =0;

    ? ? pStack->pop(elem);//取出來的是棧頂的那個字符o

    ? ? cout<<endl<<elem<<endl;

    ? ? cout<<pStack->stackLength()<<endl;

    ? ? //pStack->pop();

    ? ? if(pStack->stackEmpty())

    ? ? {

    ? ? ? ? cout<<"棧為空"<<endl;

    ? ? }

    ? ? if(pStack->stackFull())

    ? ? {

    ? ? ? ? cout<<"棧為滿"<<endl;

    ? ? }

    ? ? pStack->clearStack();+

    ? ? cout<<pStack->stackLength()<<endl;

    ? ? system("pause");

    ? ? return 0;

    }


    查看全部
    0 采集 收起 來源:演示代碼運行

    2018-09-05

  • 棧的 實現?

    查看全部
    0 采集 收起 來源:實例演示二

    2018-08-06

  • 針對十六進制的優化

    char num[]="0123456789ABCDEF";

    數字作為num下標即可表示出>=10時的正確數字。

    查看全部
  • 習慣寫成if(0==m_element)能夠避免寫成單個等號卻找不到錯誤在哪的問題

    查看全部
    0 采集 收起 來源:實例演示一

    2018-07-26

  • 本節運用了運算符重載,類模板

    查看全部
    0 采集 收起 來源:案例完善

    2018-07-10

  • 括號匹配需要有兩個棧,第一個棧用來存放掃描到的字符,并且沒有掃描到的情況;另外一個棧記載當前最急需的是哪一個字符,與當前的棧頂進行匹配

    查看全部
  • m_pBuffer = new char[size]; ?使用new動態申請了size個char類型大小的空間,如果把char換成類名時,就是申請size個類名大小的空間。但只要是給類實例化對象申請空間,就要調用類的構造函數,而所寫的構造函數如果是 Coordinate(int x , int y ); ?不是默認構造函數,參數沒有默認值,在實例化對象時,就必須給賦予x,y值,否則就會報錯,而使用new運算符申請多個內存時,無法為每個對象都賦初值x,y。那樣就會報錯。因此就需要將構造函數改為有默認值的構造函數 Coordinate(int x = 0, int y = 0); ?這樣的話編譯就可以通過了,但每個對象的x,y值都是0 .

    查看全部
    0 采集 收起 來源:案例改造

    2018-06-30

  • 1.注意 當函數形參是引用時,實參必須是變量或者變量的引用,而不能是具體的值 例如:如果要傳 3,必須先int a=3,再把a傳進去 2.新建文件到項目里時要勾選那兩個選項

    查看全部
    1 采集 收起 來源:演示代碼運行

    2018-06-30

  • 1.設置棧的容量,它的值不會隨進?;虺鰲6淖?2.析構函數用來回收棧的內存,否則會造成內存泄漏 3.插入數據時,先判斷棧是否為空;若滿棧,則先清空棧 4.已有元素的個數是當前棧中元素的個數而不是棧的容量 5.入棧導致棧頂上升 ? ?出棧導致棧頂下降 6.遍歷棧中所有的元素 ? 從棧頂到棧底或者從棧底到棧頂 ? ?兩種方式都可以

    59f2ca320001c0e612800720-156-88.jpg02:40

    ?


    查看全部
    0 采集 收起 來源:實例介紹

    2018-06-30

  • 當你傳入一數據時,使用引用就能改變這個數據的值,到后面你想知道出棧元素的值就可以直接輸出你開始傳入的那個元素

    查看全部
    0 采集 收起 來源:實例介紹

    2018-06-30

  • 特殊類型

    #include<ostream>

    using namespace std;

    friend sotream &operator<<(ostream &out,類型名 &coor)//聲明一個友元函數

    查看全部
    0 采集 收起 來源:案例完善

    2018-06-15

  • 棧的類模板,是棧能夠對多種類型通用

    查看全部
    0 采集 收起 來源:案例完善

    2018-06-15

  • 這是頭文件

    查看全部
    0 采集 收起 來源:演示代碼運行

    2018-06-15

舉報

0/150
提交
取消
課程須知
"本課程是數據結構初級課程 1、熟練掌握C++語言基礎語法"
老師告訴你能學到什么?
1、棧的工作原理 2、棧的實現方法及編碼技巧 3、棧模板的編碼技巧和使用技巧 4、數制轉換編程思路及棧的作用 5、括號匹配編程思路及棧的作用

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!