當前位置:首頁 » 服務存儲 » 通常使用什麼存儲來存儲廣義表
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

通常使用什麼存儲來存儲廣義表

發布時間: 2022-05-31 19:44:25

A. 關於數據結構中,畫出廣義表(((a),b),(d),(e,f))的存儲結構

如圖:

任意廣義表都由表頭和表尾組成,所以都能用一個表結點表示。表頭可能是原子,也可能是廣義表。表尾一定是廣義表或空表,所以能用一個表結點表示或表明其是空表。

(1)通常使用什麼存儲來存儲廣義表擴展閱讀

同層存儲所有兄弟的擴展鏈式存儲

在這種存儲方式中,同樣設置兩類結點:表結點和原子結點。與第一種方式不同的是該種存儲方式中的表結點和原子結點都有一個指針指向同一層中下一個元素結點的指針。該指針類似於單向鏈表中的next指針,把同一層的元素結點鏈接到一起。

B. 數據結構廣義表的問題

第一章 數據結構基本概念
1、基本概念:理解什麼是數據、數據對象、數據元素、數據結構、數據的邏輯結構與物理結構、邏輯結構與物理結構間的關系。
2、面向對象概念:理解什麼是數據類型、抽象數據類型、數據抽象和信息隱蔽原則。了解什麼是面向對象。由於目前關於這個問題有許多說法,我們採用了一種最流行的說法,即Coad與Yourdon 給出的定義:面向對象 = 對象 + 類 + 繼承 + 通信。
要點:
·抽象數據類型的封裝性
·面向對象系統結構的穩定性
·面向對象方法著眼點在於應用問題所涉及的對象
3、數據結構的抽象層次:理解用對象類表示的各種數據結構
4、演算法與演算法分析:理解演算法的定義、演算法的特性、演算法的時間代價、演算法的空間代價。
要點:·演算法與程序的不同之處需要從演算法的特性來解釋
·演算法的正確性是最主要的要求
·演算法的可讀性是必須考慮的
·程序的程序步數的計算與演算法的事前估計
·程序的時間代價是指演算法的漸進時間復雜性度量

第二章 數組
1、作為抽象數據類型的數組:數組的定義、數組的按行順序存儲與按列順序存儲
要點:
·數組元素的存放地址計算
2、順序表:順序表的定義、搜索、插入與刪除
要點:
·順序表搜索演算法、平均比較次數的計算
·插入與刪除演算法、平均移動次數的計算
3、多項式:多項式的定義
4、字元串:字元串的定義及其操作的實現
要點:
·串重載操作的定義與實現

第三章 鏈接表
1、單鏈表:單鏈表定義、相應操作的實現、單鏈表的游標類。
要點:
·單鏈表的兩種定義方式(復合方式與嵌套方式)
·單鏈表的搜索演算法與插入、刪除演算法
·單鏈表的遞歸與迭代演算法
2、循環鏈表:單鏈表與循環鏈表的異同
3、雙向鏈表:雙向鏈表的搜索、插入與刪除演算法、鏈表帶表頭結點的優點
4、多項式的鏈接表示

第四章 棧與隊列
1、棧:棧的特性、棧的基本運算
要點:
·棧的數組實現、棧的鏈表實現
·棧滿及棧空條件、抽象數據類型中的先決條件與後置條件
2、棧的應用:用後綴表示計算表達式,中綴表示改後綴表示
3、隊列:隊列的特性、隊列的基本運算
要點:
·隊列的數組實現:循環隊列中隊頭與隊尾指針的表示,隊滿及隊空條件
·隊列的鏈表實現:鏈式隊列中的隊頭與隊尾指針的表示、
4、雙向隊列:雙向隊列的插入與刪除演算法
5、優先順序隊列:優先順序隊列的插入與刪除演算法

第五章 遞歸與廣義表
1、遞歸:遞歸的定義、遞歸的數據結構、遞歸問題用遞歸過程求解
要點:·鏈表是遞歸的數據結構,可用遞歸過程求解有關鏈表的問題
2、遞歸實現時棧的應用
要點:·遞歸的分層(樹形)表示:遞歸樹
·遞歸深度(遞歸樹的深度)與遞歸工作棧的關系
·單向遞歸與尾遞歸的迭代實現
3、廣義表:廣義表定義、廣義表長度、廣義表深度、廣義表表頭、廣義表表尾
要點:
·用圖形表示廣義表的存儲結構
·廣義表的遞歸演算法

第六章 樹與森林
1、樹:樹的定義、樹的基本運算
要點:
·樹的分層定義是遞歸的
·樹中結點個數與高度的關系
2、二叉樹:二叉樹定義、二叉樹的基本運算
要點:
·二叉樹性質、二叉樹中結點個數與高度的關系、不同種類的二叉樹棵數
·完全二叉樹的順序存儲、完全二叉樹的雙親、子女和兄弟的位置
·二叉樹的前序·中序·後序·層次遍歷
·前序
·中序
·後序的線索化二叉樹、前驅與後繼的查找方法
3、霍夫曼樹:霍夫曼樹的構造方法、霍夫曼編碼、帶權路徑長度的計算
4、樹的存儲:樹的廣義表表示、樹的雙親表示、樹與二叉樹的對應關系、樹的先根·中根·後根·層次遍歷。
5、堆:堆的定義、堆的插入與刪除演算法
要點:
·形成堆時用到的向下調整演算法及形成堆時比較次數的上界估計
·堆插入時用到的向上調整演算法

第七章 集合與搜索
1、集合的概念:集合的基本運算、集合的存儲表示
要點:
·用位數組表示集合時集合基本運算的實現
·用有序鏈表表示集合時集合基本運算的實現
2、並查集:並查集定義、並查集的三種基本運算的實現
3、基本搜索方法
要點:
·對一般表的順序搜索演算法(包括有監視哨和沒有監視哨)
·對有序順序表的順序搜索演算法、用判定樹(即擴充二叉搜索樹)描述搜索,以及平均搜索長度(成功與不成功)的計算。
·對有序順序表的折半搜索演算法、用判定樹(即擴充二叉搜索樹)描述搜索,以及平均搜索長度(成功與不成功)的計算。
4、二叉搜索樹:
要點:
·動態搜索樹與靜態搜索樹的特性
·二叉搜索樹的定義、二叉搜索樹上的搜索演算法、二叉搜索樹搜索時的平均搜索長度(成功與不成功)的計算。
·AVL樹結點上的平衡因子、AVL樹的平衡旋轉方法
·高度為h的AVL樹上的最少結點個數與最多結點個數
· AVL樹的搜索方法、插入與刪除方法

第八章 圖
1、圖:圖的定義與圖的存儲表示
要點:
·鄰接矩陣表示(通常是稀疏矩陣)
·鄰接表與逆鄰接表表示
·鄰接多重表(十字鏈表)表示
2、深度優先遍歷與廣度優先遍歷
要點:
·生成樹與生成樹林的定義
·深度優先搜索是個遞歸的過程,而廣度優先搜索是個非遞歸的過程
·為防止重復訪問已經訪問過的頂點,需要設置一個訪問標志數組visited
3、圖的連通性
要點:
·深度優先搜索可以遍歷一個連通分量上的所有頂點
·對非連通圖進行遍歷,可以建立一個生成森林
·對強連通圖進行遍歷,可能建立一個生成森林
·關節點的計算和以最少的邊構成重連通圖
4、最小生成樹
要點:
·對於連通網路、可用不會構成環路的權值最小的n-1條邊構成最小生成樹
·會畫出用Kruskal演算法及Prim演算法構造最小生成樹的過程
5、單源最短路徑
要點:
·採用逐步求解的方式求某一頂點到其他頂點的最短路徑
·要求每條邊的權值必須大於零
6、活動網路
要點:
·拓撲排序、關鍵路徑、關鍵活動、AOE網
·拓撲排序將一個偏序圖轉化為一個全序圖。
·為實現拓撲排序,要建立一個棧,將所有入度為零的頂點進棧
·關鍵路徑的計算

第九章 排序
1、基本概念:關鍵碼、初始關鍵碼排列、關鍵碼比較次數、數據移動次數、穩定性、附加存儲、內部排序、外部排序
2、插入排序:
要點:
·當待排序的關鍵碼序列已經基本有序時,用直接插入排序最快
3、選擇排序:
要點:
·用直接選擇排序在一個待排序區間中選出最小的數據時,與區間第一個數據對調,而不是順次後移。這導致方法不穩定。
·當在n個數據(n很大)中選出最小的5 ~ 8個數據時,錦標賽排序最快
·錦標賽排序的演算法中將待排序的數據個數n補足到2的k次冪2k-1<n≤2k
·在堆排序中將待排序的數據組織成完全二叉樹的順序存儲。
4、交換排序:
要點:
·快速排序是一個遞歸的排序方法
·當待排序關鍵碼序列已經基本有序時,快速排序顯著變慢。
5、二路歸並排序:
要點:
·歸並排序可以遞歸執行
·歸並排序需要較多的附加存儲。可以採用一種"推拉法"(參見教科書上習題)實現歸並排序,演算法的時間復雜度為O (n)、空間復雜度為O(1)
·歸並排序對待排序關鍵碼的初始排列不敏感,排序速度較穩定
6、外排序
要點:
·多路平衡歸並排序的過程、I/O緩沖區個數的配置
·外排序的時間分析、利用敗者樹進行多路平衡歸並
·利用置換選擇方法生成不等長的初始歸並段
·最佳歸並樹的構造及WPL的計算

第十章 索引與散列
1、線性索引:
要點:
·密集索引、稀疏索引、索引表計算
·基於屬性查找建立倒排索引、單元式倒排表
2、動態搜索樹
要點:
·平衡的m路搜索樹的定義、搜索演算法
·B樹的定義、B樹與平衡的m路搜索樹的關系
·B樹的插入(包括結點分裂)、刪除(包括結點調整與合並)方法
·B樹中結點個數與高度的關系
·B+樹的定義、搜索、插入與刪除的方法
3、散列表
要點:
·散列函數的比較
·裝填因子 a 與平均搜索長度的關系,平均搜索長度與表長m及表中已有數據對象個數n的關系
·解決地址沖突的(閉散列)線性探查法的運用,平均探查次數的計算
·線性探查法的刪除問題、散列表類的設計中必須為各地址設置三個狀態
·線性探查法中的聚集問題
·解決地址沖突的(閉散列)雙散列法的運用,平均探查次數的計算
·雙散列法中再散列函數的設計要求與表長m互質,為此m設計為質數較宜
·解決地址沖突的(閉散列)二次散列法的運用,平均探查次數的計算
·注意:二次散列法中裝填因子 a 與表長m的設置
·解決地址沖突的(開散列)鏈地址法的運用,平均探查次數的計算

我們原來也學過數據結構,個人覺得數組,棧與隊列 ,遞歸與廣義表,樹與

森林(尤其是二叉樹),圖 ,排序這些比較重要,應該好好看

C. 廣義表採用頭尾分析法進行存儲,請簡述其對應存儲結構的特點

我認為這種存儲結構的特點就是比較性能化,然後它的存儲效果會比較好,一般都是容量比較大的

D. 廣義表和線性表的區別

一、性質不同

1、廣義表(Lists,又稱列表)是一種非連續性的數據結構,是線性表的一種推廣。即廣義表中放鬆對表元素的原子限制,容許它們具有其自身結構。

2、線性表是最基本、最簡單、也是最常用的一種數據結構。線性表(linearlist)是數據結構的一種,一個線性表是n個具有相同特性的數據元素的有限序列。

二、特徵不同

1、廣義表

(1)廣義表通常用圓括弧括起來,用逗號分隔其中的元素。

(2)為了區分原子和廣義表,書寫時用大寫字母表示廣義表,用小寫字母表示原子。

(3)若廣義表Ls非空(n≥1),則al是Ls的表頭,其餘元素組成的表(a2,a3,…,an)稱為Ls的表尾。

(4)廣義表是遞歸定義的。

2、線性表

(1)集合中必存在唯一的一個「第一元素」。

(2)集合中必存在唯一的一個「最後元素」。

(3)除最後一個元素之外,均有唯一的後繼(後件)。

(4)除第一個元素之外,均有唯一的前驅(前件)。

(4)通常使用什麼存儲來存儲廣義表擴展閱讀

結構特點

1、均勻性:雖然不同數據表的數據元素可以是各種各樣的,但對於同一線性表的各數據元素必定具有相同的數據類型和長度。

2、有序性:各數據元素在線性表中的位置只取決於它們的序號,數據元素之前的相對位置是線性的,即存在唯一的「第一個「和「最後一個」的數據元素,除了第一個和最後一個外,其它元素前面均只有一個數據元素(直接前驅)和後面均只有一個數據元素(直接後繼)。

E. 廣義表的兩種存儲結構有什麼不同

CPU內部
第一層:通用寄存器文件
第二層:指令和數據緩沖棧
第三層:緩存
第四層:主存儲器(DRAM)
第五層:在線外部存儲(硬碟驅動器)
第六層:離線外部存儲(磁帶,光碟存儲器等)
層次結構,主要體現在內存的存取速度~~~ ~~
①多個內存和使它們並行工作。本質:添加瓶頸的數目份,使它們並行地工作,從而減緩固定的瓶頸。

②多級存儲系統,特別是高速緩存技術,該技術是一種影響系統的性能,以減少存儲器的帶寬,該方案的最佳結構。本質的:瓶頸構件分割成多個管道組件,並增加運行時間的重疊,以增加速度,減緩固定瓶頸。

③設置各種內部緩沖存儲器的微處理器,以減少對存儲器的訪問的壓力。增加寄存器的數量在CPU中,也大大緩解了存儲器中的壓力。精華液:緩沖技術來減緩臨時瓶頸。

F. 廣義表的鏈式存儲結構怎麼畫

表示原子的節點由兩部分構成,分別是 tag 標記位和原子的值,表示子表的節點由三部分構成,分別是 tag 標記位、hp 指針和 tp 指針。tag 標記位用於區分此節點是原子還是子表,通常原子的 tag 值為 0,子表的 tag 值為 1。子表節點中的 hp 指針用於連接本子表中存儲的原子或子表,tp 指針用於連接廣義表中下一個原子或子表。
由於廣義表中既可存儲原子(不可再分的數據元素),也可以存儲子表,因此很難使用順序存儲結構表示,通常情況下廣義表結構採用鏈表實現。
使用鏈表存儲廣義表,首先需要確定鏈表中節點的結構。由於廣義表中可同時存儲原子和子表兩種形式的數據,因此鏈表節點的結構也有兩種

G. 問一下數據的存儲方式:1).順序存儲方式2).鏈式存儲方式3).索引存儲方式4).散列存儲方式

數組、廣義表、樹和圖等數據結構都是非線性結構。 1.2 試舉一個數據結構散列存儲方法:就是根據結點的關鍵字直接計算出該結點的存儲地址。 1.4 設

H. 畫出下列廣義表的存儲結構示意圖 A=((a,b,c),d(a,b,c)) B=(a,(b,(c,d)e),f)

A=((a,b,c),d(a,b,c)) B=(a,(b,(c,d)e),f)具體存儲結構示意圖如下:

使用鏈表存儲廣義表,首先需要確定鏈表中節點的結構。由於廣義表中可同時存儲原子和子表兩種形式的數據,因此鏈表節點的結構也有兩種。

(8)通常使用什麼存儲來存儲廣義表擴展閱讀:

由於廣義表是對線性表和樹的推廣,並且具有共享和遞歸特性的廣義表可以和有向圖建立對應,因此廣義表的大部分運算與這些數據結構上的運算類似。

根據表頭、表尾的定義可知:任何一個非空廣義表的表頭是表中第一個元素,它可以是原子,也可以是子表,而其表尾必定是子表。

I. 廣義表一般採用鏈式存儲結構,而不採用順序存儲結構,是什麼原因

廣義表 的元素可以是廣義表 順序存儲的話 如果添加或者刪除一個元素的話 開銷太大吧