日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构(3) -- 栈和队列

發(fā)布時間:2024/2/28 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构(3) -- 栈和队列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

3.1 棧

  • 棧是一種線性表,只允許在一段進行插入和刪除操作

  • 棧的順序存儲結(jié)構(gòu):

  • 注意棧頂初始化時,top指針是-1還是0,

  • 入棧時先判滿,出棧時先判空

  • 共享棧:兩個棧棧底設(shè)置在共享空間的兩端,兩個棧頂向共享空間的中間延伸

  • 棧的鏈?zhǔn)酱鎯?/strong>:采用單鏈表實現(xiàn),操作在單鏈表表頭進行

  • ?

    3.2 隊列

  • 操作受限的線性表,只允許在表的一端進行插入,在表的另一端刪除。操作特性是先進先出。

  • 隊列的順序存儲:

  • 兩個指針front和rear指向隊頭和隊尾,隊尾指針指向隊尾元素的下一個位置

  • 入隊先判滿,出隊先判空

  • 循環(huán)隊列:入隊出隊指針都向前走

  • 將順序隊列臆造為一個環(huán)狀,當(dāng)隊尾指針Q.front == Q.Maxsize - 1,再前進一個位置就自動到0,利用除余運算實現(xiàn)。

  • 隊列長度:(rear + maxsize - front) % maxsize

  • 區(qū)分隊列隊空和隊滿的三種方式:

  • 犧牲一個單元區(qū)分,入隊時少用一個隊列單元,當(dāng)隊頭指針在隊尾指針下一位置作為隊滿標(biāo)志。即隊滿條件:(rear+1)%maxsize == front,隊空:rear==front

  • 類型中增設(shè)表示元素個數(shù)的數(shù)據(jù)成員

  • 類型中增設(shè)tag數(shù)據(jù)成員來區(qū)分

  • 隊列的鏈?zhǔn)酱鎯?#xff1a;

  • 一個同時帶有隊頭指針和隊尾指針的單鏈表,頭指針指向頭結(jié)點,隊尾指針指向尾結(jié)點。

  • 當(dāng)Q.front == Q.rear == NULL時,鏈?zhǔn)疥犃袨榭?/p>

  • 單鏈表表示的鏈?zhǔn)疥犃羞m合數(shù)據(jù)變動較大的情形,不存在隊滿和產(chǎn)生溢出的問題。

  • 雙端隊列:

  • 允許兩端都可以進行入隊和出隊操作

  • 輸出受限的雙端隊列

  • 輸入受限的雙端隊列

  • ?

    3.3 棧和隊列的應(yīng)用

  • 棧在括號匹配中的應(yīng)用

  • 初始設(shè)置一個空棧,順序讀入括號

  • 若是右括號,與棧頂進行匹配,若是不合法的情況(括號序列不匹配,退出程序)

  • 若是左括號,壓棧,算法結(jié)束時,棧空,否則括號序列不匹配

  • 棧在表達式求值中的應(yīng)用

  • 中綴轉(zhuǎn)后綴:

  • 遇到數(shù)字,入隊

  • 遇到運算符:

    • 如果是'(',入棧

    • 如果是')',依次把棧中運算符加入隊列,知道'('出現(xiàn),從棧中刪除'('

    • 若是其他運算符,當(dāng)優(yōu)先級高于棧頂運算符時,入棧;否則,從棧頂開始,依次彈出比當(dāng)前處理的運算符優(yōu)先級高和優(yōu)先級相等的運算符,直到遇到優(yōu)先級高或者遇到')'

  • 后綴表達式計算:

  • 順序掃描表達式每一項,若是操作數(shù),則壓棧;若是操作符op,則連續(xù)從棧中彈出兩個操作數(shù)Y和X,形成X< op >Y,將計算結(jié)果壓棧。

  • 表達式掃描完成后,棧頂存放最后計算結(jié)果

  • 棧在遞歸中的應(yīng)用:

    遞歸的精髓在域能否把原始問題轉(zhuǎn)換為屬性相同但規(guī)模較小的問題

  • 隊列在層次遍歷中的應(yīng)用:

    在處理當(dāng)前層或當(dāng)前行時就對下一層或下一行做預(yù)處理,把處理順序安排好。使用隊列是為了保存下一步的處理順序。

  • 隊列在計算機系統(tǒng)中的應(yīng)用

  • 解決主機與外部設(shè)備之間速度不匹配的問題

  • 解決由多用戶引起的資源競爭問題

  • ?

    3.4 特殊矩陣的壓縮存儲

  • 數(shù)組的存儲結(jié)構(gòu):行優(yōu)先和列優(yōu)先

  • 行優(yōu)先:行下標(biāo)范圍:[l1,r1],列下標(biāo)范圍:[l2,r2],公式:LOC(ai,j) = LOC(al1,l2) + [(i-l1) * (r2-l2+1) + (j-l2)] * L

  • 列優(yōu)先:公式:LOC(ai,j) = LOC(al1,l2) + [(j-l2) * (r1-l1+1) + (i-l1)] * L

  • 矩陣的壓縮存儲

  • 壓縮存儲:為多個值相同元素只分配一個存儲空間,0元素不分配存儲空間

  • 特殊矩陣:具有很多相同矩陣元素或0元素,并且分布有一定規(guī)律,如:對稱矩陣,上(下)三角矩陣,對角矩陣

  • 特殊矩陣壓縮方法:

  • 對稱矩陣:將n維對稱矩陣A[ 1-n ] [ 1-n ]存在一維數(shù)組B[ n(n+1)/2 ],只存放主對角線和下三角區(qū)元素。元素ai,j在數(shù)組B(從0開始)中對應(yīng)下標(biāo)為1+2+....(i-1)+(j-1)

  • 下三角矩陣:與對稱矩陣相似,但存儲完下三角區(qū)后,緊接著存儲對角線上方的常量一次,故壓縮存在B[ n(n+1)/2+1 ]

  • 上三角矩陣

  • 三對角矩陣

  • 稀疏矩陣:構(gòu)成三元組(行標(biāo)、列標(biāo)、值)

  • 總結(jié)

    以上是生活随笔為你收集整理的数据结构(3) -- 栈和队列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。