例:一元多項式及其運算
方法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...