青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨感而發

雜七雜八

統計

留言簿(13)

閱讀排行榜

評論排行榜

隊列學習--數組實現

今天學習了隊列,隊列的思路和棧差不多,他只是先進先出(FIFO)的方式。他的主要操作和棧有:IsEmpty判斷空,EnQueue入隊,(棧是push,不過沒有什么大的區別)。DeQueue出隊。其核心數據也是很相似,也有一個數據區域nData,不過他是隊頭nHand和隊尾nTail。對頭定位著將要出隊的元素,隊尾對應著入隊的元素。
實現細節:也是為了能使操作簡單一些,我們開始都從0開始,nTail指向的是入隊時候數據要加的位置,也就是說他是先把該位置設置為入隊的值,然后自己再加1.nData[nTail] = shuju; nTail++;這種方式。nHead指向的就是出隊的位置,這樣的好處就是能很快的判斷隊是否為空,只要nHand == nTail隊就是空的了。(因為出隊位置處沒有數據),這樣出隊也很方便,只需要得到nHead指向位置的數據,然后nHead加1就可以。
不過有的時候,會一邊入隊,一邊出隊,這樣nTail和nHead會一直往后走,而nhead前面的區域已經自由了,沒有用處,這樣就浪費了空間。為了能有效地利用空間,我們可以循環用數據區域,就是當nTail 到數據區域最后的時候,我們把它回到0。這樣就能很好的循環利用。不過這樣就不能簡單的用nTail >= nLen的方式判斷隊是否滿了,做了一個處理,如果nTai的下一個位置就是nHead的話,我們認為隊滿了,nTail指向的是隊末要插入的位置,如果他的下一個位置為nHead的話,則說明nHead..nTail中已經存放了數據。最多只能存放nTail位置一個數據。這里我們為什么不讓他多存一個數據,使nTail == nHead得時候,才認為隊滿呢?這樣不是更高的利用空間嗎?話雖這樣說,不過nTail == nHead是我們判斷隊是否為空的標識。如果我們把nTail == nHead也作為判斷隊滿的標識的話,就會引起歧義,所以我選擇浪費一個空間,來更方便的判斷隊空和隊滿。還有注意在入隊的時候要判斷隊是否為滿,出隊的時候,要判斷是否為空。
奉上源代碼:用數組實現的:

#include <stdio.h>
#include 
<stdlib.h>
#include 
<assert.h>

//定義一個隊列的結構體
struct MyQueue 
{
    
int nTail;    //隊列尾
    int nHead;  //隊列頭
    int nData[10];    //隊列數據
}
;

//規則說明:
//nHead 直接指向了對頭的數據位置,
//nTail 直接指向了隊尾要插入的位置,
//如果nTail==nHead ,隊列為空
//nTail 比 nHead位置小一,(就是在他前面一個),代表隊滿
//所以數組中能存放的數據要比數組的空間小1,是為了判斷隊列滿的情況。

MyQueue g_queue;        
//定義全局的隊列

//判斷隊列是否為空
bool IsEmpty(void)
{
    
return (g_queue.nHead == g_queue.nTail);        //如果尾等于頭,則為空
}


//設置隊列為空
int SetEmpty(void)
{
    g_queue.nTail 
= 0;        //都設置為零
    g_queue.nHead = 0;
    
return 1;
}


//判斷隊列是否為滿
bool IsFull(void)
{
    
//如果ntial 比 nHead小1,則棧滿。
    return (g_queue.nTail + 1% 10 == g_queue.nHead;    
}


//入隊
int EnQueue(int nData)
{
    assert(
!IsFull());        //assert表示斷言,斷言!IsFull成立,如果不成立,則報告程序錯誤!
    g_queue.nData[g_queue.nTail] = nData;
    g_queue.nTail 
= (g_queue.nTail + 1% 10;
    
return (g_queue.nTail - g_queue.nHead) % 10;
}


//出隊
int DeQueue(void)
{
    assert(
!IsEmpty());
    
int nData = g_queue.nData[g_queue.nHead];
    g_queue.nHead 
= (g_queue.nHead + 1% 10;
    
return nData;
}


int main()
{
    
//測試
    SetEmpty();            //設置隊列為空
    if (IsEmpty())        //判斷為空,輸出信息
    {
        printf(
"The queue is empty!\n");
    }


    
//
    for (int i = 0; i < 9++i)
    
{
        EnQueue(i);
    }

    
if (IsFull())                //判斷隊列滿
    {
        printf(
"The Queue is full\n");        //棧滿的英語是不是full啊
    }


    
for (int i = 0; i < 9++i)                //出隊
    {
        printf(
"%d ", DeQueue());            
    }

    printf(
"\n");

    
if (IsEmpty())                        
    
{
        printf(
"The queue is empty!\n");
    }


    
for (int i = 0; i < 8++i)            //測試出隊和入隊
    {
        EnQueue(i);
        EnQueue(i
*2);
        printf(
"%d ", DeQueue());
    }

    printf(
"\n");

    
while(!IsEmpty())
    
{
        printf(
"%d ", DeQueue());
    }

    printf(
"\n");

    system(
"pause");
    
return 0;
}

posted on 2009-04-29 20:56 shongbee2 閱讀(3555) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構和算法

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美极品色图| 伊人色综合久久天天五月婷| 亚洲精品国产精品国产自| 亚洲影视综合| 亚洲黄色天堂| 久久精品国产99精品国产亚洲性色| 欧美日韩在线三区| 国产精品久久久久影院色老大 | 久久久噜噜噜久噜久久| 亚洲美女视频网| 亚洲永久免费观看| 羞羞漫画18久久大片| 亚洲黄一区二区| 亚洲图片欧美日产| 亚洲一品av免费观看| 亚洲国产精品久久久久婷婷老年| 亚洲精品之草原avav久久| 在线国产欧美| 蜜臀久久99精品久久久久久9| 国产精品99久久久久久有的能看| 亚洲午夜在线观看视频在线| 亚洲专区在线视频| 欧美一区日本一区韩国一区| 国产日韩在线播放| 亚洲日本中文字幕| 午夜伦欧美伦电影理论片| 榴莲视频成人在线观看| 亚洲高清资源综合久久精品| 欧美一区二区视频免费观看| 日韩视频永久免费观看| 亚洲免费一在线| 久久久久久久久久久久久女国产乱| 欧美日韩精品久久久| 国产日韩欧美二区| 一区二区免费看| 欧美www视频| 亚洲国内在线| 亚洲国产精品久久久久秋霞不卡| 亚洲国产成人tv| 这里只有精品在线播放| 久久成人精品无人区| 亚洲每日更新| 国产日本欧美一区二区| 久久精品欧洲| 欧美福利视频在线| 亚洲一区二区三区四区五区黄 | 国产一区二区三区精品欧美日韩一区二区三区| 国产欧美日韩激情| 亚洲女ⅴideoshd黑人| 亚洲国产精品va在线看黑人| 美女久久一区| 亚洲美女在线看| 欧美国产视频日韩| 在线亚洲伦理| 国自产拍偷拍福利精品免费一| 一区二区三区不卡视频在线观看 | 亚洲国产综合视频在线观看 | 欧美成人精品影院| 亚洲一区影音先锋| 久久国产精品99国产精| 亚洲韩国青草视频| 亚洲在线第一页| 在线视频你懂得一区| 国产精品无码专区在线观看| 久久久久久婷| 欧美成黄导航| 在线亚洲伦理| 午夜精品福利视频| 亚洲国产91色在线| 亚洲高清视频在线| 欧美色综合网| 亚洲精品国产精品乱码不99按摩 | 亚洲国产欧美一区二区三区同亚洲 | 亚洲国产欧美一区二区三区同亚洲| 久久亚洲精品伦理| 日韩天堂av| 国产精品美女久久福利网站| 久久久水蜜桃| 免费成人黄色| 亚洲——在线| 欧美国产日韩免费| 亚洲第一狼人社区| 国产精品成人一区二区网站软件| 午夜精品免费视频| 久久国内精品视频| 午夜电影亚洲| 亚洲激情影视| 国产精品白丝av嫩草影院| 亚洲综合色网站| 一区二区三区免费观看| 免费一区视频| 午夜性色一区二区三区免费视频| 亚洲欧洲综合另类| 国产精品综合不卡av| 欧美成人精精品一区二区频| 久久九九有精品国产23| 亚洲日本中文| 美女91精品| 亚洲欧美成人一区二区在线电影| 国产区精品在线观看| 欧美日韩中文精品| 久久久久在线观看| 久久久久久久97| 在线亚洲一区| 亚洲最新在线视频| 亚洲二区免费| 99pao成人国产永久免费视频| 亚洲美女av网站| 亚洲国产另类精品专区| 亚洲私人影院| 亚洲欧美国产日韩中文字幕| 久久精品亚洲一区二区三区浴池| 噜噜噜躁狠狠躁狠狠精品视频| 一本色道久久| 午夜电影亚洲| 在线视频中文亚洲| 亚洲免费视频中文字幕| 久久一综合视频| 欧美亚洲网站| 久久精品国产99| 欧美在线视频播放| 久久久九九九九| 久久综合网络一区二区| 欧美丰满少妇xxxbbb| 亚洲精品一区二区三区樱花| 91久久精品美女| 欧美一区高清| 久久不射电影网| 欧美色精品天天在线观看视频| 国产乱肥老妇国产一区二| 国产综合网站| 性感少妇一区| 亚洲一区二区日本| 欧美二区视频| 国产欧美一区二区精品婷婷| 亚洲日本在线观看| 亚洲女优在线| 午夜精品99久久免费| 欧美成va人片在线观看| 亚洲免费综合| 国产精品欧美一区二区三区奶水| 亚洲国产精品123| 久久精品中文字幕一区二区三区| 亚洲深夜激情| 欧美日韩在线三级| 亚洲尤物在线视频观看| 久久久久久电影| 午夜精品福利电影| 在线观看欧美日韩| 欧美一区二区三区播放老司机| 99ri日韩精品视频| 免费高清在线一区| 欧美视频专区一二在线观看| 夜夜嗨网站十八久久| 亚洲韩国一区二区三区| 久久精品亚洲乱码伦伦中文| 亚洲国产精品成人va在线观看| 欧美激情第9页| 欧美成人免费全部观看天天性色| 很黄很黄激情成人| 亚洲国产精品黑人久久久| 欧美日韩一区二区免费视频| 午夜精品久久久久久99热| 国产精品日韩欧美一区二区| 国产美女一区| 久热精品视频在线| 免费成年人欧美视频| 亚洲免费在线视频| 一区二区欧美精品| 亚洲激情网址| 亚洲激情专区| 韩国av一区二区三区| 亚洲精品中文字幕女同| 欧美精品免费在线| 免费成年人欧美视频| 欧美另类女人| 亚洲国产精品一区二区尤物区| 欧美成人首页| 午夜国产精品视频| 欧美精品久久天天躁| 欧美电影在线观看完整版| 欧美丝袜一区二区| 欧美国产日韩二区| 亚洲国产三级在线| 久久综合伊人77777尤物| 欧美中文字幕视频| 国产精品mv在线观看| 欧美一区二视频| 亚洲欧洲在线看| 欧美日韩成人综合天天影院| 亚洲人成在线播放| 亚洲网站在线播放| 欧美日韩专区| 99国产一区二区三精品乱码| 日韩一级成人av| 国产精品丝袜白浆摸在线| 欧美国产日韩在线| 狂野欧美一区| 亚洲人成艺术| 国内在线观看一区二区三区|