表示式求值資料結構 盤點資料結構的應用場景

2021-10-11 23:54:22 字數 1442 閱讀 3432

資料結構是計算機程式設計中最重要的內容之一,我們經常會看到乙個公式,那就是程式=資料結構+演算法。從這個公式我們就能夠看出來資料結構是多麼的重要,要想寫出優雅高效的程式,一定離不開良好的資料結構,今天我們就來盤點一下常用的資料結構的應用場景。

鍊錶是最基礎的資料結構,也是最常用的資料結構,很多複雜的資料結構都是通過煉表演化而來的,而鍊錶就可以用來實現lru快取淘汰。

我們可以維護乙個有序的鍊錶,越靠近鍊錶尾部的節點是越早之前訪問的。當有乙個新的資料被訪問時,我們從鍊錶頭部開始順序遍歷鍊錶。如果此資料之前已經被快取在鍊錶中了,我們遍歷得到這個資料的對應結點,並將其從原來的位置刪除,並插入到鍊錶頭部。如果此資料沒在快取鍊錶中,如果此時快取未滿,可直接在鍊錶頭部插入新節點儲存此資料;如果此時快取已滿,則刪除鍊錶尾部節點,再在鍊錶頭部插入新節點。

資料庫已經成為我們應用程式離不開的儲存引擎,對於大量的資料,我們經常需要建立資料庫索引來提高查詢檢索效率,而b_樹就是非常高效的資料結構,它通過將資料存放到葉子節點,增加了索引儲存空間,同時b樹的結構又讓樹的層次很低,大大加快了檢索的比較次數,因此非常高效。

排序和查詢是我們經常需要進行的操作,而排序的最終目的也是為了更好地查詢。而二叉樹這個資料結構,就是為了方便我們進行資料的查詢。我們都知道搜尋二叉樹的結構可以讓查詢變成二分查詢,這大大加快速了查詢效率。

對於乙個表示式比如a+b*c,因為有優先順序,所以我們不能按照從左到右的順序進行運算,在這個時候棧這個資料結構就發揮出它的優勢,通過使用棧,我們就能夠輕鬆地計算表示式的值。

對於上面的表示式,我們只需要將數值和操作符壓入到不同的棧中,然後從最後面比較操作符的優先順序,如果後面的操作符的優先順序更高,那麼就先彈出資料計算後面的表示式值,否則可以先計算前面表示式的值。

大型的網際網路架構中,訊息佇列一定少不了,它不僅可以消除高峰期的流量值,還可以解耦**,更可以處理日誌。

而訊息佇列底層的資料結構就是佇列,它是一種先進先出的資料結構,當然現在的訊息佇列是有優先順序的,不過這些都是在佇列的基礎上演變的,如果沒有佇列的基礎,訊息佇列是不能夠掌握的。

我們都知道redis的常用五種資料結構,其中有乙個有序集合,它是如何實現的呢?答案就是它使用了跳表這種資料結構。不同於紅黑樹的複雜操作,跳表使用多層索引結構,大大加速了檢索時間。

資料結構 表示式求值

一 實驗目的 通過乙個具體實際應用例子,加深對資料結構課程的理解,能夠綜合利用資料結構以及c語言的知識設計程式,應用到實際問題中去。二 實驗題目 常見的小型計算器可以通過輸入乙個由運算元和操作符組成的表示式計算出結構,設計乙個程式模擬上述功能。本實驗要求至少建立兩個棧和乙個運算子優先順序比較表,按照...

資料結構 表示式求值

程式 如下 1 include 2 include 3 include 45 define stack init size 100 6 define stackincrement 10 7 define overflow 2 8 define ok 1 9 define error 0 1011 t...

資料結構 表示式求值

題目鏈結 題目描述 給出乙個表示式,其中運算子僅包含 加 減 乘 整除 乘方 要求求出表示式的最終值。資料可能會出現括號情況,還有可能出現多餘括號情況。資料保證不會出現大於或等於2 31 231的答案。資料可能會出現負數情況。輸入格式 輸入僅一行,即為表示式。輸出格式 輸出僅一行,既為表示式算出的結...