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

數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇,信息學(xué)奧賽03-數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

參考:

線性結(jié)構(gòu)-棧

總結(jié)

本系列為C++數(shù)據(jù)結(jié)構(gòu)系列,會(huì)介紹 線性結(jié)構(gòu),簡(jiǎn)單樹,特殊樹,簡(jiǎn)單圖等。本文為線性結(jié)構(gòu)部分。

大綱要求

  1. 線性結(jié)構(gòu)
    【 3 】鏈表:?jiǎn)捂湵怼㈦p向鏈表、循環(huán)鏈表
    【 3 】棧
    【 3 】隊(duì)列

線性結(jié)構(gòu)-棧

棧是Stack一個(gè)后進(jìn)先出Last In First Out,LIFO的線性表,他要求只在表尾對(duì)數(shù)據(jù)執(zhí)行刪除和插入等操作。
棧就是一個(gè)線性表,可以是數(shù)組、也可以是鏈表。但它的操作有別于一般的線性表。棧的元素必須先進(jìn)后出,也就是先進(jìn)入棧的元素必須后出棧。而不能像一般的鏈表或數(shù)組那樣從任意位置讀取元素。
棧的操作只能在線性表的表尾進(jìn)行,這個(gè)標(biāo)為被稱為棧的棧頂top,相應(yīng)的表頭被稱為棧的棧底bottom
數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇,信息學(xué)奧賽03-數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

棧的數(shù)據(jù)必須從棧頂進(jìn)入,也必須從棧頂取出,先入棧的數(shù)據(jù)在后入棧的數(shù)據(jù)下面。
棧中不含有任何數(shù)據(jù)時(shí)的狀態(tài)叫作空棧,此時(shí)棧頂top等于棧底bottom。

回文匹配

#include <stdio.h>
#include <string.h>
int main ( )
{
    char a[ 101],s[101] ;
    int i, len, mid,next, top;
    gets(a) ; //讀入一行字符串
    len=strlen(a) ; //求字符串的長(zhǎng)度
    mid=len / 2-1; //l求字符串的中點(diǎn)
    top=0 ; //棧的初始化
//將mid前的字符依次入棧
    for(i=0 ; i<=mid; i++)
        s [++top]=a[ i] ;
//判斷字符串的長(zhǎng)度是奇數(shù)還是偶數(shù),并找出需要進(jìn)行字符匹配的起始下標(biāo)
    if ( len%2==0 )
        next=mid+1;
    else
        next=mid+2;
//開始匹配
    for(i=next; i<=len-1; i++)
    {
        if(a[i]!=s[top])
            break;
        top--;
    }
    if(top==0)
        printf("yes");
    else
        printf("no");

    getchar();
    getchar();
    return 0;
}

數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇,信息學(xué)奧賽03-數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

小貓釣魚的故事

#include <stdio.h>


struct queue
{
    int data[100];//100
    int head;
    int tail;
};

struct stack
{
    int data[10];
    int top;

};
int main ( )
{
    struct queue q1,q2;
    struct stack s;
    int book[10]= {0};
    int i,t;

    //初始化隊(duì)列
    q1.head=1;
    q1.tail=1;
    q2.head=1;
    q2.tail=1;

    // 初始化棧
    s.top=0;

    //int q1_data[7]= {0,2,4,1,2,5,6};
    //初始化標(biāo)記數(shù)組,標(biāo)記哪些牌在桌上
    for(i=1; i<=6; i++)
    {
        scanf("%d",&q1.data[q1.tail]);
        //q1.data[q1.tail]=q1_data[i];
        q1.tail++;
    }

    //int q2_data[7]= {0,3,1,3,5,6,4};
    //初始化標(biāo)記數(shù)組,標(biāo)記哪些牌在桌上
    for(i=1; i<=6; i++)
    {
        scanf("%d",&q2.data[q2.tail]);
        //q2.data[q1.tail]=q2_data[i];
        q2.tail++;
    }

    //當(dāng)隊(duì)列不為空時(shí)執(zhí)行循環(huán)
    while(q1.head<q1.tail &&
            q2.head<q2.tail)
    {
        t=q1.data[q1.head];//q1取出一張牌

        printf("q1---> t  %d , book[t]  %d \n",&t,&book[t]);
        // 判斷q1當(dāng)前打出的牌能否贏牌
        if(book[t]==0)//表明桌面上沒(méi)有牌面為t的牌
        {
            // q1次輪沒(méi)有贏牌
            q1.head++;//把q1打出的牌出列
            s.top++;
            s.data[s.top]=t;//把打出的牌t放在桌上,入棧
            book[t]=1;//標(biāo)記桌上有牌面為t的牌
        }
        else
        {
            //q1可以贏牌
            q1.head++;
            q1.data[q1.tail]=t;//把剛打的牌放在手牌中的末尾 入隊(duì)
            q1.tail++;
            //把桌上可以贏得的牌依次放入手中
            while(s.data[s.top]!=t)
            {
                book[s.data[s.top]]=0;//取消標(biāo)記
                q1.data[q1.tail]=s.data[s.top];//依次放入隊(duì)尾
                q1.tail++;
                s.top--; //棧中少了一張牌,棧頂減一

            }

        }

        //q2出一張牌
        t=q2.data[q2.head];
        printf("q2---> t  %d , book[t]  %d \n",&t,&book[t]);
        // 判斷q2當(dāng)前打出的牌能否贏牌
        if(book[t]==0)//表明桌面上沒(méi)有牌面為t的牌
        {
            // q2次輪沒(méi)有贏牌
            q2.head++;//把q1打出的牌出列
            s.top++;
            s.data[s.top]=t;//把打出的牌t放在桌上,入棧
            book[t]=1;//標(biāo)記桌上有牌面為t的牌
        }
        else
        {
            //q2可以贏牌
            q2.head++;
            q2.data[q2.tail]=t;//把剛打的牌放在手牌中的末尾 入隊(duì)
            q2.tail++;
            //把桌上可以贏得的牌依次放入手中
            while(s.data[s.top]!=t)
            {
                book[s.data[s.top]]=0;//取消標(biāo)記
                q2.data[q2.tail]=s.data[s.top];//依次放入隊(duì)尾
                q2.tail++;
                s.top--; //棧中少了一張牌,棧頂減一

            }

        }


    }

    if(q2.head ==q2.tail)
    {
        printf("q1贏win\n");
        printf("q1當(dāng)前手中的牌是:");
        for(i=q1.head; i<=q1.tail-1; i++)
        {
            printf(" %d",q1.data[i]);
        }
        //如果桌面有牌,輸出桌面的牌
        if(s.top>0)
        {
            printf("\n桌上的牌是");
            for(i=1; i<=s.top; i++)
            {
                printf(" %d",s.data[i]);
            }
        }
        else
        {
            printf("\n桌上沒(méi)牌了");

        }
    }
    else
    {
        printf("q2贏win\n");
        printf("q2當(dāng)前手中的牌是:");
        for(i=q2.head; i<=q2.tail-1; i++)
        {
            printf(" %d",q2.data[i]);
        }
        //如果桌面有牌,輸出桌面的牌
        if(s.top>0)
        {
            printf("\n桌上的牌是");
            for(i=1; i<=s.top; i++)
            {
                printf(" %d",s.data[i]);
            }
        }
        else
        {
            printf("\n桌上沒(méi)牌了");

        }

    }


    getchar();
    getchar();
    return 0;
}

數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇,信息學(xué)奧賽03-數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-579406.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)01-線性結(jié)構(gòu)-鏈表?xiàng)j?duì)列-棧篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)-鏈表-01】反轉(zhuǎn)鏈表

    【數(shù)據(jù)結(jié)構(gòu)-鏈表-01】反轉(zhuǎn)鏈表

    ??????歡迎來(lái)到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識(shí),也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁(yè),持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月10日
    瀏覽(28)
  • 數(shù)據(jù)結(jié)構(gòu),隊(duì)列,順序表隊(duì)列,鏈表隊(duì)列

    ????????隊(duì)列是一種常見的數(shù)據(jù)結(jié)構(gòu),它具有先進(jìn)先出(First-In-First-Out,F(xiàn)IFO)的特性,類似于排隊(duì)等候的場(chǎng)景。以下是隊(duì)列的要點(diǎn): 1. 定義:隊(duì)列是一種線性數(shù)據(jù)結(jié)構(gòu),由一系列元素組成,可以進(jìn)行插入和刪除操作。插入操作(稱為入隊(duì))只能在隊(duì)列的末尾進(jìn)行,刪除操

    2024年02月11日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)-線性表-鏈表

    線性表的定義:由n(n=0)個(gè)數(shù)據(jù)特性相同的元素構(gòu)成的有限序列,稱為線性表。 初始化只需要把頭節(jié)點(diǎn)的next給進(jìn)行初始化即可,data數(shù)據(jù)直接放空,變成頭結(jié)點(diǎn)方便下面的數(shù)據(jù)操作。 也可以理解為放棄一部分空間,提高程序運(yùn)行速度。

    2024年02月08日
    瀏覽(23)
  • 【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列(鏈表模擬隊(duì)列)

    【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列(鏈表模擬隊(duì)列)

    ? 學(xué)習(xí)本章節(jié)必須具備 單鏈表的前置知識(shí), 建議提前學(xué)習(xí):點(diǎn)擊鏈接學(xué)習(xí):?jiǎn)捂湵砀鞣N功能函數(shù) 細(xì)節(jié) 詳解 本章節(jié)是學(xué)習(xí)用 單鏈表模擬隊(duì)列 1. 單鏈表實(shí)現(xiàn)隊(duì)列 思路如下 隊(duì)列:只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先 進(jìn)先出

    2024年04月27日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu):線性表(隊(duì)列實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu):線性表(隊(duì)列實(shí)現(xiàn))

    隊(duì)列:只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除操作的特殊線性表,隊(duì)列具有先進(jìn)先出(FIFO)的特性. 進(jìn)行插入操作的一端稱為 隊(duì)尾 ;進(jìn)行刪除操作的一端叫做 隊(duì)頭 隊(duì)列應(yīng)用于 解決公平性排隊(duì)(抽號(hào)機(jī)) 廣度優(yōu)先遍歷(BFS) 和棧一樣,隊(duì)列也可以使用兩種物理結(jié)構(gòu)進(jìn)行存儲(chǔ)

    2024年02月09日
    瀏覽(15)
  • 【數(shù)據(jù)結(jié)構(gòu)】線性表之鏈表

    【數(shù)據(jù)結(jié)構(gòu)】線性表之鏈表

    上一篇文章講述了線性表中的順序表,這篇文章講述關(guān)于鏈表的定義、類別、實(shí)現(xiàn)、多種不同鏈表的優(yōu)缺點(diǎn)和鏈表與順序表的優(yōu)缺點(diǎn)。 關(guān)于上一篇文章的鏈接:線性表之順序表 鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上 非連續(xù)、非順序 的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針

    2024年02月05日
    瀏覽(102)
  • Python數(shù)據(jù)結(jié)構(gòu)與算法-數(shù)據(jù)結(jié)構(gòu)(列表、棧、隊(duì)列、鏈表)

    Python數(shù)據(jù)結(jié)構(gòu)與算法-數(shù)據(jù)結(jié)構(gòu)(列表、棧、隊(duì)列、鏈表)

    數(shù)據(jù)結(jié)構(gòu)是指相互之間存在這一種或者多種關(guān)系的數(shù)據(jù)元素的集合和該集合中元素之間的關(guān)系組成。 簡(jiǎn)單來(lái)說(shuō),數(shù)據(jù)結(jié)構(gòu)就是設(shè)計(jì)數(shù)據(jù)以何種方式組織并存儲(chǔ)在計(jì)算機(jī)中。 比如:列表、集合與字典等都是一種數(shù)據(jù)結(jié)構(gòu)。 N.Wirth:“程序=數(shù)據(jù)結(jié)構(gòu)+算法” 數(shù)據(jù)結(jié)構(gòu)按照其 邏輯結(jié)

    2024年02月08日
    瀏覽(36)
  • 線性數(shù)據(jù)結(jié)構(gòu):數(shù)組、受限數(shù)組(棧、隊(duì)列)、線性表

    線性數(shù)據(jù)結(jié)構(gòu):數(shù)組、受限數(shù)組(棧、隊(duì)列)、線性表

    ??數(shù)組(Array)是有序的元素序列。屬于線性結(jié)構(gòu)(有且僅有一個(gè)前驅(qū)、有且僅有一個(gè)后繼)。 ??數(shù)組的關(guān)鍵在于在內(nèi)存中的物理地址對(duì)應(yīng)的是 一段連續(xù)的內(nèi)存 。這意味著如果想要在任意位置刪除/新增一個(gè)元素,那么該位置往后的所有元素,都需要往前挪/往后挪一個(gè)位

    2024年03月09日
    瀏覽(23)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法_01_線性表】線性表

    定義 ● 線性表 具有相同數(shù)據(jù)類型**(同類型)**的n個(gè)數(shù)據(jù)元素有限序列 ● 三方面 ● 定義 邏輯結(jié)構(gòu) ● 相同數(shù)據(jù)類型 ● 每個(gè)數(shù)據(jù)元素所占的空間相同 ● 有限 ● 有限個(gè)元素 ● 序列 ● 是有次序的 ● 基本操作 操作— 基本操作 運(yùn)算 ● 創(chuàng)建線性表【initList(L)】 ● 初始化線

    2024年02月11日
    瀏覽(54)
  • 【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列

    【Java數(shù)據(jù)結(jié)構(gòu)】線性表-隊(duì)列

    隊(duì)列 :只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO(FirstIn First Out) 入隊(duì)列:進(jìn)行插入操作的一端稱為 隊(duì)尾(Tail/Rear) 出隊(duì)列:進(jìn)行刪除操作的一端稱為 隊(duì)頭(Head/Front) 在Java中, Queue是個(gè)接口,底層是通過(guò)鏈表實(shí)現(xiàn)的。

    2023年04月15日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包