資料結構與演算法 筆記 資料結構與演算法筆記 棧

2021-10-18 04:50:47 字數 1260 閱讀 4276

以前學習的時候都沒怎麼好好的做過筆記,總是東記一點,西寫一點,甚至都不做筆記,導致後面找的時候找不到,最後還是求助搜尋引擎浪費掉很多時間。好腦筋不如個爛筆頭呀。

這次又重新學習python的資料結構及演算法(中國mooc上的公開課),就好好做個筆記吧。

棧是一種只能在一端進行插入和刪除的線性資料結構。

一般來說,棧主要有兩個操作:乙個是進棧(push),又叫作入棧、壓棧;另乙個是出棧(pop),或者叫作退棧。棧遵循的原則是後進先出,即lifo(last in first out)。

下面使用python的基本結構列表實現棧:

棧的應用:領扣上有個題是關於括號匹配的。基本思想就是:從左至右掃瞄括號串,最新開啟(most recent)的左括號,應該匹配最先遇到的右括號。這樣,第乙個左括號(最早開啟),就應該匹配最後乙個右括號(最後遇到)。這種次序反轉的識別,正好符合棧的特性。

**的實現有乙個簡單版的(只檢查小括號)和乙個普通版的(同時檢查小括號,中括號及大括號),現實中遇到更多的自然是普通版的。這裡就只貼下普通版了。

## stack()是上面寫好的類def matches(open, close):    opens = '(['    return opens.index(open) == closes.index(close)def check(strings):    s = stack()    balance = true    index = 0    while index and         symbol = strings[index]        if symbol in '([{':            s.push(symbol)        else:            if s.isempty():                balance = false            else:                top = s.pop()                if not matches(top, symbol):                    balance = false        index += 1    if balance and s.isempty():        return true    else:        return false

課堂筆記 資料結構與演算法 1

本筆記基於 小甲魚資料結構與演算法 第一集 資料結構在傳統上分為 邏輯結構 可以理解成資料與資料的關係。物理結構 資料在物理的磁碟的儲存形式,也可以理解成邏輯結構對映在物理記憶體或者磁碟上的儲存形式。我們主要學習邏輯結構。表面意思,單一的元素儲存在同乙個集合中,它們之間無任何關係。在樹狀結構中,裡面...

筆記 資料結構

解釋經典例題 計算給定多項式在給定點x處的值。f x a0 a1 x a n 1 x n 1 a n x n 方法一 double num int n,double array,double x 改進方法 double num int n,double array,double x clock 捕捉...

資料結構與演算法筆記

main.c檔案 主函式檔案 include seqlist.h 包含的標頭檔案 include main.h void menu intmain break case2 printf 輸入要插入的元素 while scanf s d item item 1 break case3 printf d...