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

C小加

厚德 博學 求真 至善 The bright moon and breeze
posts - 145, comments - 195, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

基本數(shù)據(jù)結(jié)構(gòu):棧(stack)

作者:C小加 更新時間:2012-8-1

棧(stack)是限制插入和刪除只能在一個位置上進行的線性表,該位置在表的末端,叫做棧頂。添加元素只能在尾節(jié)點后添加,刪除元素只能刪除尾節(jié)點,查看節(jié)點也只能查看尾節(jié)點。添加、刪除、查看依次為入棧(push)、出棧(pop)、棧頂節(jié)點(top)。形象的說,棧是一個先進后出(LIFO)表,先進去的節(jié)點要等到后邊進去的節(jié)點出來才能出來。


如圖1,是一個棧的形象圖,top指針指向的是棧頂節(jié)點,所以我們可以通過top訪問到2節(jié)點,但是0和1節(jié)點由于先于2進入這個表,所以是不可見的。如果把0節(jié)點當做頭節(jié)點,2節(jié)點當做尾節(jié)點,那么棧限制了訪問權(quán)限,只可以訪問尾節(jié)點。


如圖2,當添加一個節(jié)點3的時候,只能在棧頂節(jié)點,也就是尾節(jié)點后添加,這樣3節(jié)點變成了棧頂,2節(jié)點變成了不可見節(jié)點,訪問的時候只能訪問到3節(jié)點。入棧時限制了插入地址,只能在棧頂添加節(jié)點。


當我們執(zhí)行出棧的命令時,圖2的棧頂元素是3節(jié)點,刪除的時候只能允許刪除棧頂?shù)脑兀@樣子3節(jié)點被刪除,top指向刪除后的棧頂2節(jié)點,如圖3所示。

棧有兩種是實現(xiàn)結(jié)構(gòu),一種是順序存儲結(jié)構(gòu),也就是利用數(shù)組實現(xiàn),一種是鏈式存儲結(jié)構(gòu),可以用單鏈表實現(xiàn)。數(shù)組實現(xiàn)棧很簡單,用一個下標標記top來表示棧頂,top==-1時,棧空,top==0時,表示棧里只有一個元素,通過訪問top為下標的數(shù)組元素即可。出棧top自減,入棧top自加就OK了。

單鏈表實現(xiàn)棧要比單鏈表的實現(xiàn)簡單點。我們通過在表的尾端插入來實現(xiàn)push,通過刪除尾節(jié)點來實現(xiàn)pop,獲取尾節(jié)點的元素來表示top。我修改了鏈表那一章的單鏈表代碼,把頭節(jié)點當做棧頂節(jié)點,實現(xiàn)了一個簡單的棧模板,僅供學習所用。代碼會不定時更新。代碼下載

代碼如下:


template<class T>
class stackNode
{
    public:
    stackNode():next(NULL){}
    T data;//
    stackNode* next;//指向下一個節(jié)點的指針
};
template<class T>
class mystack
{
    private:
    unsigned int stacklength;
    stackNode<T>* node;//臨時節(jié)點
    stackNode<T>* headnode;//尾結(jié)點
    public:
        mystack();//初始化
        unsigned int length();//棧元素的個數(shù)
        void push(T x);//入棧
        bool isEmpty();//判斷棧是否為空
        void pop();//出棧
        T top();//獲得棧頂元素
        void clear();//清空棧

};
template<class T>
mystack<T>::mystack()
{
    node=NULL;
    headnode=NULL;
    stacklength=0;
}
template<class T>
inline unsigned int mystack<T>::length(){return stacklength;}
template<class T>
void  mystack<T>::push(T x)
{
    node=new stackNode<T>();
    node->data=x;
    node->next=headnode;//把node變成頭節(jié)點
    headnode=node;
    ++stacklength;
}
template<class T>
bool  mystack<T>::isEmpty()
{
    return stacklength==0;
}
template<class T>
void  mystack<T>::pop()
{
    if(isEmpty()) return;
    node=headnode;
    headnode=headnode->next;//頭節(jié)點變成它的下一個節(jié)點
    delete(node);//刪除頭節(jié)點
    --stacklength;
}
template<class T>
T  mystack<T>::top()
{
    if(!isEmpty())
    return headnode->data;
}
template<class T>
void  mystack<T>::clear()
{
    while(headnode!=NULL)
    {
        node=headnode;
        headnode=headnode->next;
        delete(node);
    }
    node=NULL;
    headnode=NULL;
    stacklength=0;
}

很清楚,除了clear函數(shù)外,所有的方法的時間復雜度都是O(1)。這種實現(xiàn)方式的缺點在于對newdelete的調(diào)用的開銷是昂貴的,所以采用數(shù)組的方式實現(xiàn)會更好一點。

棧的應用

使用棧的時候一般不用自己重新去寫,因為STL給我們實現(xiàn)了一個很安全的棧,可以放心去使用。也可以用數(shù)組模擬一個,很簡單。

編譯器調(diào)用函數(shù)就用了棧結(jié)構(gòu),當?shù)谝粋€函數(shù)還沒執(zhí)行完畢,調(diào)用第二個函數(shù)的時候,編譯器就會把第一個函數(shù)壓棧,第二個函數(shù)調(diào)用完畢的時候,就會取棧頂函數(shù),也就是第一個函數(shù)繼續(xù)執(zhí)行。

平衡符號 http://acm.nyist.net/JudgeOnline/problem.php?pid=2

中綴轉(zhuǎn)后綴 http://acm.nyist.net/JudgeOnline/problem.php?pid=467

后綴試求值 http://acm.nyist.net/JudgeOnline/problem.php?pid=35

poj 3250 http://acm.pku.edu.cn/JudgeOnline/problem?id=3250

poj 1363 http://acm.pku.edu.cn/JudgeOnline/problem?id=1363

poj 1208 http://acm.pku.edu.cn/JudgeOnline/problem?id=1208

poj 1686 http://acm.pku.edu.cn/JudgeOnline/problem?id=1686

poj 3250 http://acm.pku.edu.cn/JudgeOnline/problem?id=2045

hdu 1022 http://acm.hdu.edu.cn/showproblem.php?pid=1022



 

Feedback

# re: 基本數(shù)據(jù)結(jié)構(gòu):棧(stack)  回復  更多評論   

2012-08-02 10:24 by SunRise_at
(⊙o⊙)哦..............
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            性欧美video另类hd性玩具| 在线免费观看视频一区| 亚洲一区二区高清| 99re6这里只有精品| 日韩写真在线| 亚洲一区二区三区午夜| 亚洲欧美日韩高清| 久久久久久亚洲精品杨幂换脸| 久久久xxx| 欧美成人精品激情在线观看| 免费日韩成人| 欧美日韩免费一区二区三区| 国产精品久久久久999| 国产一区亚洲| 最新亚洲激情| 在线午夜精品| 久久三级福利| 亚洲精品乱码| 亚洲一区二区三区欧美| 久久一区二区三区av| 欧美日本韩国一区二区三区| 国产精品欧美一区二区三区奶水| 国内精品国语自产拍在线观看| 亚洲精品综合久久中文字幕| 午夜精品久久| 亚洲国产精品久久久久| 亚洲一区在线播放| 欧美1区免费| 国产亚洲欧美在线| 夜夜嗨av色综合久久久综合网| 香蕉成人啪国产精品视频综合网| 亚洲主播在线观看| 免费亚洲网站| 亚洲欧美国产视频| 欧美另类一区二区三区| 国产亚洲精品一区二555| 亚洲欧洲三级电影| 久久国产精品一区二区三区| 亚洲精品一区二区三区av| 久久成人这里只有精品| 欧美日韩一区二| 亚洲国产综合在线看不卡| 香蕉视频成人在线观看 | 亚洲高清视频中文字幕| 亚洲欧美视频| 亚洲日本在线观看| 久久伊伊香蕉| 国产小视频国产精品| 亚洲天堂成人在线观看| 国产精品一区二区久久精品| 夜夜爽99久久国产综合精品女不卡| 欧美在线观看一区| 国产精品青草久久| 亚洲一区日韩在线| 亚洲精品在线观看视频| 久久婷婷av| 亚洲大胆美女视频| 免费久久99精品国产自| 欧美亚洲在线观看| 国产欧美精品一区| 欧美一区=区| 亚洲午夜精品福利| 99精品国产在热久久下载| 欧美高潮视频| 亚洲三级毛片| 日韩午夜在线视频| 欧美日韩亚洲一区二区| 日韩亚洲国产精品| 最近中文字幕日韩精品| 欧美日韩成人在线| 一区二区三区精品国产| 99视频国产精品免费观看| 欧美电影在线观看完整版| 亚洲高清激情| 亚洲精品一二区| 国产精品久久久久久影视| 亚洲欧美日韩国产中文在线| 一区二区日韩精品| 国产欧美一区二区三区在线老狼| 久久久国产精品亚洲一区| 欧美中文在线视频| 亚洲国产精品久久久久婷婷884| 亚洲国产精品99久久久久久久久| 欧美激情1区| 亚洲欧美美女| 久久婷婷丁香| 亚洲图片欧美午夜| 午夜国产精品视频| 一区视频在线| 日韩视频在线免费观看| 国产日本精品| 亚洲国产欧美一区二区三区同亚洲| 欧美精品免费看| 午夜欧美大片免费观看| 欧美在线一二三区| 欧美在线不卡| 亚洲一区精品在线| 欧美一区免费| 日韩视频一区二区三区| 亚洲黄色在线看| 精品51国产黑色丝袜高跟鞋| 午夜精品三级视频福利| 一二三区精品福利视频| 亚洲精品视频免费观看| 性欧美在线看片a免费观看| 欧美三级电影大全| 日韩视频中午一区| 国产精品久久久久久久久婷婷| 噜噜噜躁狠狠躁狠狠精品视频| 欧美一级黄色网| 欧美一区永久视频免费观看| 国产精品亚发布| 久久黄金**| 女主播福利一区| 一区二区欧美亚洲| 欧美中文在线免费| 亚洲网友自拍| 久久久视频精品| 欧美大色视频| 国产伦精品一区二区| 美国成人毛片| 亚洲国产精品一区制服丝袜| 国产欧美高清| 欧美成人dvd在线视频| 亚洲综合电影| 久久激情网站| 亚洲精品日韩精品| 午夜日韩电影| 亚洲黄色三级| 老司机67194精品线观看| 欧美激情综合五月色丁香| 韩国av一区二区三区四区| 亚洲午夜免费视频| 亚洲美女在线观看| 亚洲国产成人久久综合一区| 午夜精品久久久久久99热| 久久精品国产99国产精品| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲国产精品一区在线观看不卡 | 日韩视频免费在线| 欧美一级专区| 久久久最新网址| 新67194成人永久网站| 欧美在线视频一区二区三区| 欧美在线视频日韩| 另类激情亚洲| 欧美视频在线观看视频极品| 亚洲视频在线观看视频| 亚洲欧美另类国产| 亚洲精品乱码久久久久久按摩观 | 久久久www成人免费精品| 亚洲国产精品久久久久秋霞蜜臀| 久久精品1区| 久久国产精品久久久久久| 久久精品国产69国产精品亚洲| 美女视频网站黄色亚洲| 久久精品一区二区三区不卡| 欧美一区二区三区啪啪| 亚洲永久精品大片| 久久亚洲综合色一区二区三区| 欧美亚洲一区二区在线| 欧美一级黄色录像| 欧美视频三区在线播放| 亚洲无限乱码一二三四麻| 久久五月天婷婷| 欧美国产高清| 国产一区二区三区久久久久久久久| 精品成人乱色一区二区| 亚洲调教视频在线观看| 免费不卡在线视频| 久久精品99久久香蕉国产色戒| 国产精品久久久免费| 在线观看欧美亚洲| 亚洲高清久久久| 一本色道久久综合亚洲精品不卡| 亚洲香蕉网站| 亚洲欧美日韩在线不卡| 国产精品久久91| 亚洲精品一二| 亚洲视屏在线播放| 老鸭窝毛片一区二区三区| 亚洲最新视频在线播放| 亚洲精品国产精品国自产观看| 欧美国产精品一区| 欧美电影免费观看| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 一区二区三区日韩在线观看| 欧美一级淫片aaaaaaa视频| 欧美激情精品久久久六区热门| 一区二区激情| 韩国av一区二区三区| 亚洲欧美激情在线视频| 久久国产成人| 亚洲欧美日韩国产成人| 久久在线免费| 国产在线一区二区三区四区 | 亚洲欧洲精品一区二区三区| 欧美四级电影网站| 亚洲第一黄色网| 久久精品视频99|