浙大資料結構與演算法慕課隨手記 第二講 線性結構

2021-10-23 06:25:09 字數 1524 閱讀 1568

例:一元多項式及其運算

方法1:順序儲存直接表示(陣列,浪費空間)

方法2:順序儲存非零項(結構陣列,(係數,指數)二元組,按指數大小有序儲存)

方法3:鍊錶儲存非零項(定義兩個資料域)

多項式表示問題啟示:

1.同乙個問題有不同表示/儲存方法(陣列or鍊錶)

2.共性問題:有序線性序列的組織與管理

線性表:同類元素的有序線性序列(長度、空表、表頭、表尾)

抽象資料型別描述

儲存方法:

廣義表:線性表的推廣,元素可以是單元素/另乙個廣義表

例:二元多項式的表示

方法:看成關於x的一元多項式,「複雜」鍊錶,鍊錶巢狀?

*tag-data/sublist-next

*標誌域-0單元素資料域/1指標域(復用儲存空間)-指向後繼結點

多重鍊錶:結點有多個指標域(反之不一定成立,如雙向鍊錶)

——實現樹、圖等複雜結構

例:(稀疏)矩陣

x 二維陣列

√ 十字鍊錶:只儲存非零項,通過兩個指標域串聯同行同列(迴圈鍊錶)

*標識域tag:head頭結點、term非零結點

例:表示式求值

中綴表示式:運算數+運算符號(有優先順序)

字尾表示式:順序掃瞄,逐個處理

——需要有種順序儲存倒序輸出的儲存結構

堆疊:具有一定操作約束的有窮線性表,**先出lifo

只在棧頂top插入(入棧push)、刪除(出棧pop)

其他操作:建立空堆疊、判斷是否空/滿

堆疊應用:表示式求值、函式呼叫及遞迴實現、dfs、回溯演算法(老鼠走迷宮)

例:中綴表示式求值→字尾

運算數相對順序不變(直接輸出)

運算符號順序改變(儲存「等待中」,比較當前與棧頂「等待中」的優先順序)

括號在堆疊外優先順序高,入棧後低;左括號入棧,右括號pop棧頂運算子直至遇到左括號

佇列:具有一定操作約束的有窮線性表,先入先出fifo

在一段插入(入隊addq,rear+1),在另一端刪除(出隊deleteq,front+1)

其他操作:建立空佇列,判斷是否空/滿

思路:比較指數,相同指數的項係數相加,其餘拷貝

方法:採用不帶頭結點的鍊錶,按指數遞減排列

求解思路

1.多項式表示:非零項,陣列(簡單+事先確定大小)/鍊錶(複雜+動態性強)→動態陣列

2.程式框架:4個函式

3.讀多項式:rear=null或指向臨時頭部空結點

4.加法實現

5.乘法實現

方法1:將乘法運算轉換為加法運算(固定一項乘另乙個多項式)

方法2:逐項插入(兩重迴圈,關鍵:遍歷找到插入位置)

6.多項式輸出:鍊錶遍歷

浙大資料結構與演算法慕課隨手記 第三講 樹(上)

分層次組織管理效率更高 資料管理基本操作 查詢 靜態查詢 陣列 方法1 順序查詢 哨兵值 o n 方法2 二分查詢 有序 連續儲存,left right mid,一般是向下取整 o logn 二分查詢的啟示 判定樹 1.每個結點的查詢次數 該結點所在層數 2.查詢次數 判定樹的深度 3.n個結點判定...

2020秋冬慕課浙大資料結構期中考試及答案

考試時間1小時 一 判斷題 1 1所謂 迴圈佇列 是指用單向迴圈鍊錶或者迴圈陣列表示的佇列。2分 tf 答案 f 1 2在具有n個結點的單鏈表中,訪問結點和增加結點的時間複雜度分別對應為o 1 和o n 3分 tf 答案 f 1 3如果無向圖g必須進行兩次廣度優先搜尋才能訪問其所有頂點,則g一定有2...

《資料結構與演算法》 浙大MOOC)第1章 概論

include include include clock t start,stop double duration define maxn 10 多項式最大項數,即多項式階數 1 define maxk 1e7 被測函式最大重複呼叫次數 doublef1 int n,double a,double...