国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

c++實現(xiàn)數(shù)據(jù)結(jié)構(gòu)棧和隊列

這篇具有很好參考價值的文章主要介紹了c++實現(xiàn)數(shù)據(jù)結(jié)構(gòu)棧和隊列。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、棧

頭文件

#ifndef ZHAN_H
#define ZHAN_H

#define MAX 8
#include <iostream>
using namespace std;

class Shu
{
    int datatype;  //入棧的數(shù)據(jù)
    int *arr;  //棧的數(shù)組
    int top;  //記錄棧頂元素的下標(biāo)

public:
    //構(gòu)造函數(shù)
    Shu();


    //析構(gòu)函數(shù)
    ~Shu();


    //判斷空
    int stack_empty();

    //判斷滿
    int stack_full();

    //入棧
    int stack_push(int data);

    //遍歷棧
    void stack_show();

    //出棧
    int stack_pop();

    //獲取棧頂元素
    int stack_top();

    //求棧的大小
    int stack_size();

    //清空棧
    void stack_free();

};

void xitong();

#endif // ZHAN_H

源文件

#include "zhan.h"

Shu::Shu()
{
    datatype=0;
    arr = new int[MAX];
    top=-1;
}

Shu::~Shu()
{
    delete arr;
    arr=nullptr;
}

//判斷空
int Shu::stack_empty()
{
    if(NULL==arr)
    {
        cout<<"判空失敗"<<endl;
        return -1;
    }

    return this->top==-1;

}

//判斷滿
int Shu::stack_full()
{
    if(NULL==arr)
    {
        cout<<"判滿失敗"<<endl;
        return -1;
    }

    return this->top==MAX-1;
}

//入棧
int Shu::stack_push(int data)
{
    datatype=data;
    if(stack_full())
    {
        cout<<"入棧失敗"<<endl;
        return -1;
    }

    //top下標(biāo)自增
    this->top++;

    //將輸入的函數(shù)放入數(shù)組中
    arr[this->top]=datatype;

    cout<<"入棧成功"<<endl;

    return 0;
}

//遍歷棧
void Shu::stack_show()
{
    if(stack_empty())
    {
        cout<<"遍歷失敗"<<endl;
        return ;
    }

    //遍歷
    for(int i=0;i<this->top+1;i++)
    {
        cout<<arr[i]<<" ";
    }
    cout<<endl;
}

//出棧
int Shu::stack_pop()
{
    if(stack_empty())
    {
        cout<<"出棧失敗"<<endl;
        return -1;
    }

    //出棧
    cout<<arr[this->top]<<"出棧成功"<<endl;

    //自減
    this->top--;

    return 0;
}

//獲取棧頂元素
int Shu::stack_top()
{
    if(stack_empty())
    {
        cout<<"獲取棧頂元素失敗"<<endl;
        return -1;
    }

    //獲取棧頂元素
    cout<<"棧頂元素為:"<<arr[top]<<endl;

    return 0;
}

//求棧的大小
int Shu::stack_size()
{
    if(stack_empty())
    {
        cout<<"求棧大小失敗"<<endl;
        return -1;
    }

    //棧的大小
    int size=this->top+1;

    cout<<"棧的大小為:"<<size<<endl;
    return 0;
}

//清空棧
void Shu::stack_free()
{
    this->top=-1;

    cout<<"清空棧成功"<<endl;
}

//系統(tǒng)函數(shù)
void xitong()
{
    //定義一個Shu類型的變量名
    Shu zhan;
    while(1)
    {
        END:
        system("CLS");
        cout<<"**********************"<<endl;
        cout<<"********1、入棧********"<<endl;
        cout<<"********2、遍歷********"<<endl;
        cout<<"********3、出棧********"<<endl;
        cout<<"********4、棧頂元素*****"<<endl;
        cout<<"********5、棧的大小*****"<<endl;
        cout<<"********0、退出********"<<endl;
        cout<<"**********************"<<endl;

        int num;
        int data;
        cout<<"請輸入對應(yīng)的功能:";
        cin>>num;
        switch(num)
        {
        case 1:
            cout<<"請輸入要加入的數(shù):";
            cin>>data;
            zhan.stack_push(data);
            break;
        case 2:
            zhan.stack_show();
            break;
        case 3:
            zhan.stack_pop();
            break;
        case 4:
            zhan.stack_top();
            break;
        case 5:
            zhan.stack_size();
            break;
        case 0:
            goto ENDL;
        }
        int qp;
        cout<<"輸入清屏(7):";
        cin>>qp;
        if(qp==7)
        {
            goto END;
        }
    }
    ENDL:

    cout<<"系統(tǒng)退出成功"<<endl;
    zhan.stack_free();

}

主函數(shù)

#include <iostream>
#include "zhan.h"

using namespace std;

int main()
{
    xitong();
    return 0;
}

2、循環(huán)隊列

頭文件

#ifndef DUILIE_H
#define DUILIE_H

#define MAX 8
#include <iostream>
using namespace std;

class Shu
{
    int datatype;  //入隊的數(shù)據(jù)
    int *arr;  //循環(huán)隊列的數(shù)組
    int head;  //記錄隊列頭元素的下標(biāo)
    int tail;  //記錄隊列尾元素下標(biāo)

public:
    //構(gòu)造函數(shù)
    Shu();


    //析構(gòu)函數(shù)
    ~Shu();


    //判斷空
    int queue_empty();

    //判斷滿
    int queue_full();

    //入隊
    int queue_push(int data);

    //遍歷隊
    void queue_show();

    //出隊
    int queue_pop();

    //求隊列的大小
    int queue_size();

    //清空隊
    void queue_free();

};

//系統(tǒng)函數(shù)
void xitong();

#endif // DUILIE_H

源文件

#include "duilie.h"

Shu::Shu()
{
    datatype=0;
    arr = new int[MAX];
    head=0;
    tail=0;
}

Shu::~Shu()
{
    delete arr;
    arr=nullptr;
}

//判斷空
int Shu::queue_empty()
{
    if(NULL==arr)
    {
        cout<<"判空失敗"<<endl;
        return -1;
    }

    return this->head==this->tail;

}

//判斷滿
int Shu::queue_full()
{
    if(NULL==arr)
    {
        cout<<"判滿失敗"<<endl;
        return -1;
    }

    return (this->tail+1)%MAX==this->head;
}

//入隊
int Shu::queue_push(int data)
{
    datatype=data;
    if(queue_full())
    {
        cout<<"入隊失敗"<<endl;
        return -1;
    }

    //將輸入的函數(shù)放入數(shù)組中
    arr[this->tail]=datatype;

    //尾下標(biāo)自增
    this->tail=(this->tail+1)%MAX;

    cout<<"入隊成功"<<endl;

    return 0;
}

//遍歷棧
void Shu::queue_show()
{
    if(queue_empty())
    {
        cout<<"遍歷失敗"<<endl;
        return ;
    }

    //遍歷
    for(int i=this->head;i!=this->tail;i=(i+1)%MAX)
    {
        cout<<arr[i]<<" ";
    }
    cout<<endl;
}

//出隊
int Shu::queue_pop()
{
    if(queue_empty())
    {
        cout<<"出隊失敗"<<endl;
        return -1;
    }

    //出隊
    cout<<arr[this->head]<<"出隊成功"<<endl;

    //自增
    this->head=(this->tail+1)%MAX;

    return 0;
}

//求隊列的大小
int Shu::queue_size()
{
    if(queue_empty())
    {
        cout<<"求隊列大小失敗"<<endl;
        return -1;
    }

    //棧的大小
    int size=(this->tail+MAX-this->head)%MAX;

    cout<<"隊列的大小為:"<<size<<endl;
    return 0;
}

//清空棧
void Shu::queue_free()
{
    this->head=0;
    this->tail=0;

    cout<<"清空隊列成功"<<endl;
}

//系統(tǒng)函數(shù)
void xitong()
{
    //定義一個Shu類型的變量名
    Shu zhan;
    while(1)
    {
        END:
        system("CLS");
        cout<<"**********************"<<endl;
        cout<<"********1、入隊********"<<endl;
        cout<<"********2、遍歷********"<<endl;
        cout<<"********3、出隊********"<<endl;
        cout<<"********4、隊列的大小***"<<endl;
        cout<<"********0、退出********"<<endl;
        cout<<"**********************"<<endl;

        int num;
        int data;
        cout<<"請輸入對應(yīng)的功能:";
        cin>>num;
        switch(num)
        {
        case 1:
            cout<<"請輸入要加入的數(shù):";
            cin>>data;
            zhan.queue_push(data);
            break;
        case 2:
            zhan.queue_show();
            break;
        case 3:
            zhan.queue_pop();
            break;
        case 4:
            zhan.queue_size();
            break;
        case 0:
            goto ENDL;
        }
        int qp;
        cout<<"輸入清屏(7):";
        cin>>qp;
        if(qp==7)
        {
            goto END;
        }
    }
    ENDL:

    cout<<"系統(tǒng)退出成功"<<endl;
    zhan.queue_free();

}

主函數(shù)

#include <iostream>
#include "duilie.h"

using namespace std;

int main()
{
    xitong();
    return 0;
}

3、思維導(dǎo)圖

c++實現(xiàn)數(shù)據(jù)結(jié)構(gòu)棧和隊列,c++,數(shù)據(jù)結(jié)構(gòu),算法文章來源地址http://www.zghlxwxcb.cn/news/detail-712692.html

到了這里,關(guān)于c++實現(xiàn)數(shù)據(jù)結(jié)構(gòu)棧和隊列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)】實現(xiàn)棧和隊列

    【數(shù)據(jù)結(jié)構(gòu)】實現(xiàn)棧和隊列

    (1)棧的概念 棧是一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。 進行數(shù)據(jù)插入和刪除操作的一端稱為棧頂,另一端稱為棧底 。棧中的數(shù)據(jù)元素遵守后進先出LIFO(Last In First Out)的原則。 壓棧:棧的插入操作叫做進棧/壓棧/入棧, 入數(shù)據(jù)在棧頂。 出

    2024年02月11日
    瀏覽(26)
  • 數(shù)據(jù)結(jié)構(gòu)|棧和隊列以及實現(xiàn)

    數(shù)據(jù)結(jié)構(gòu)|棧和隊列以及實現(xiàn)

    棧:一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。 進行數(shù)據(jù)插入和數(shù)據(jù)刪除的一端稱為棧頂,另一端稱為棧頂。 棧中的數(shù)據(jù)元素遵循后進先出的原則,簡稱LIFO(Last In First Out)。 壓棧:棧的插入操作叫做進棧/壓棧/入棧, 入數(shù)據(jù)在棧頂 。 出棧:棧

    2024年02月09日
    瀏覽(22)
  • 數(shù)據(jù)結(jié)構(gòu)(Java實現(xiàn))-棧和隊列

    數(shù)據(jù)結(jié)構(gòu)(Java實現(xiàn))-棧和隊列

    棧:一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。 先進后出 棧的使用 棧的模擬實現(xiàn) 上述的主要代碼 改變元素的序列 將遞歸轉(zhuǎn)化為循環(huán) 比如:逆序打印鏈表 結(jié)果如下 隊列:只允許在一端進行插入數(shù)據(jù)操作,在另一端進行刪除數(shù)據(jù)操作的特殊線性表

    2024年02月10日
    瀏覽(30)
  • 【數(shù)據(jù)結(jié)構(gòu)】棧和隊列的模擬實現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)】棧和隊列的模擬實現(xiàn)

    前言:前面我們學(xué)習(xí)了單鏈表并且模擬了它的實現(xiàn),今天我們來進一步學(xué)習(xí),來學(xué)習(xí)棧和隊列吧!一起加油各位,后面的路只會越來越難走需要我們一步一個腳?。??? 博主CSDN主頁:衛(wèi)衛(wèi)衛(wèi)的個人主頁 ?? ?? 專欄分類:數(shù)據(jù)結(jié)構(gòu) ?? ??代碼倉庫:衛(wèi)衛(wèi)周大胖的學(xué)習(xí)日記?? ??關(guān)

    2024年02月05日
    瀏覽(23)
  • 從0開始學(xué)C++ 第二十八課 數(shù)據(jù)結(jié)構(gòu)深入 - 棧和隊列

    第二十八課:數(shù)據(jù)結(jié)構(gòu)深入 - 棧和隊列 學(xué)習(xí)目標(biāo): 理解棧(Stack)的基本概念和特性。 掌握隊列(Queue)的基本概念和特性。 學(xué)會在C++中使用棧和隊列。 了解棧和隊列的典型應(yīng)用場景。 學(xué)習(xí)內(nèi)容: 棧(Stack) 概念:棧是一種后進先出(LIFO, Last In First Out)的數(shù)據(jù)結(jié)構(gòu),元素

    2024年01月23日
    瀏覽(18)
  • 數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)5:棧和隊列的實現(xiàn)。

    數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)5:棧和隊列的實現(xiàn)。

    1.基本概念 棧:一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行數(shù)據(jù)插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的數(shù)據(jù)元素遵守后進先出LIFO(Last In First Out)的原則。 壓棧:棧的插入操作叫做進棧/壓棧/入棧,入數(shù)據(jù)在棧頂。 出棧:棧

    2024年02月13日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu)——Java實現(xiàn)棧和隊列

    數(shù)據(jù)結(jié)構(gòu)——Java實現(xiàn)棧和隊列

    (1)棧是一種線性數(shù)據(jù)結(jié)構(gòu) (2)規(guī)定只能從棧頂添加元素,從棧頂取出元素 (3)是一種先進后出的數(shù)據(jù)結(jié)構(gòu)(Last First Out)LIFO Java中可以直接調(diào)用方法來實現(xiàn)棧 如何自己寫代碼來實現(xiàn)棧呢? 先定義一個接口,方便后邊進行調(diào)用 接下來來實現(xiàn)棧的方法,調(diào)用接口,完善方法

    2024年01月20日
    瀏覽(27)
  • 【數(shù)據(jù)結(jié)構(gòu)】棧和隊列的模擬實現(xiàn)(兩個方式實現(xiàn))

    ??作者簡介: 加油,旭杏,目前大二,正在學(xué)習(xí) C++ , 數(shù)據(jù)結(jié)構(gòu) 等?? ??作者主頁:加油,旭杏的主頁?? ?本文收錄在:再識C進階的專欄?? ??代碼倉庫:旭日東升 1?? ??歡迎大家點贊 ?? 收藏 ? 加關(guān)注哦!?? ???????這一篇博客將學(xué)習(xí)棧和隊列的相關(guān)知識, 棧

    2024年02月05日
    瀏覽(29)
  • 數(shù)據(jù)結(jié)構(gòu)初階(用C語言實現(xiàn)簡單數(shù)據(jù)結(jié)構(gòu))--棧和隊列

    數(shù)據(jù)結(jié)構(gòu)初階(用C語言實現(xiàn)簡單數(shù)據(jù)結(jié)構(gòu))--棧和隊列

    ??歡迎來到T_X_Parallel的博客?。??????????博客主頁:T_X_Parallel ?????????專欄 : 數(shù)據(jù)結(jié)構(gòu)初階 ?????????歡迎關(guān)注:??點贊??收藏??留言 這小貓真好看 言歸正傳,通過上篇有關(guān)順序表和鏈表的博客,可以了解到線性表的一些大致特征,這篇博

    2024年02月08日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu)上機實驗——棧和隊列的實現(xiàn)、棧和隊列的應(yīng)用、進制轉(zhuǎn)換、約瑟夫環(huán)問題

    數(shù)據(jù)結(jié)構(gòu)上機實驗——棧和隊列的實現(xiàn)、棧和隊列的應(yīng)用、進制轉(zhuǎn)換、約瑟夫環(huán)問題

    ??1.利用棧的基本操作實現(xiàn)將任意一個十進制整數(shù)轉(zhuǎn)化為R進制整數(shù)。 ??2.利用循環(huán)隊列實現(xiàn).約瑟夫環(huán)問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數(shù),數(shù)到k的那個人出圈;他的下一個人又從1開始報數(shù),數(shù)到k的那個人出圈;依

    2024年02月08日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包