本章主要介紹:
1.什麼是線性表 2.順序表及初始化過程詳解 3.順序表以及基本操作 4.鍊錶(鏈式儲存結構)及建立(c語言詳解版)
5.鍊錶的基本操作 6.順序表和煉表的優缺點 7.靜態鍊錶及實現 8.靜態鍊錶基本操作 9.靜態鍊錶和動態鍊錶區別詳解
10.迴圈鍊錶(約瑟夫環)的建立及c語言實現 11.雙向鍊錶及其建立 12.雙向鍊錶基本操作 13.雙向迴圈鍊錶及建立
13.資料結構實現專案——俄羅斯輪盤賭小遊戲
目錄
資料結構(知識點006)
第二章 線性表
2.2 順序表及初始化過程詳解
2.2.2順序表的初始化強化部分
順序表的定義
線性表的順序儲存又稱順序表,它是用一組位址連續的儲存單元依次儲存線性表中的資料元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰。
因此,順序表的特點是:表中元素的順序結構與物理順序相同。
假設線性表l儲存的起始位置為loc(a),sizeof(elemtype)是每個資料元素所占用儲存空間的大小,則表l所對應的順序儲存如圖1所示:
圖1 線性表的順序儲存結構
注意:線性表中元素的位序是從1開始的,而陣列中元素的下標是從0開始的。
//假定線性表的元素型別為elemtype,則線性表的順序儲存型別描述為:
#define maxsize 50 //定義線性表的最大長度
typedef structsqlist; //順序表的型別定義
一維陣列可以是靜態分配的,也可以是動態分配的。在靜態分配時,由於陣列的大小和空間事先已經固定,一旦空間佔滿,再加入新的資料會產生溢位,進而導致程式崩潰。
而在動態分配時,儲存陣列的空間是在程式執行過程中,通過動態儲存分配語句分配的,一旦資料空間佔滿,就另外開闢一塊更大的儲存空間,用以替換原來的儲存空間,從而達到擴充儲存空間陣列的目的,而不需要為線性表一次性地劃分所有空間。
#define initsize 100 //表長度的初始定義
typedef struct seqlist; //動態分配陣列順序表的型別定義
注意:c的初始動態分配語句為:l.data = (elemtype*) malloc(sizeof(elemtype)*initsize) ;c++的初始動態分配語句為:順序表最主要的特點是隨機訪問。即通過首位址和元素序號可在時間o(1)內找到指定的元素;順序表的儲存密度高,每個結點只儲存資料元素;順序表邏輯上相鄰的元素物理上也相鄰,所以插入和刪除操作需要移動大量元素。l.data =new elemtype[initsize] ;
動態分配並不是鏈式儲存,它同樣屬於順序儲存結構,物理結構沒有變化,依然是隨機訪問方式,只是分配的空間大小可以在執行時決定。
資料結構 知識點
定義 度 兒子數 分支節點 除了根和葉子的節點 根的深度為1 資料結構的分類 資料結構分為邏輯結構和物理結構。邏輯結構 表現資料之間的關係的一種資料結構,分為線性結構和非線性結構。物理結構 表現資料如何儲存的一種資料結構,通常分為順序結構 鏈式結構 索引結構和雜湊結構。有序表,也叫有序線性表,資料按...
資料結構知識點
1 線性結構與非線性結構 線性結構 線性表,棧,隊 乙個根節點,最多乙個前節點乙個後節點 首節點無前節點,尾接點無後節點 非線性結構 樹形結構,圖形結構 線性表 由一組資料元素構成,資料元素的位置只取決於自己的序號 陣列 棧 限定只能在表的一端進行插入和刪除,先進後出,只能在棧頂進出 佇列 只能在表...
資料結構,知識點
二叉樹 定義 二叉樹在圖論中是這樣定義的 二叉樹是乙個連通的無環圖,並且每乙個頂點的度不大於3。有根二叉樹還要滿足根節點的度不大於2。基本概念 二叉樹是遞迴定義的,其結點有左右之分,邏輯上二叉樹有五種基本形態 1 空二叉樹 2 只有乙個根節點的二叉樹 3 只有左子樹 4 只有右子樹 5 完全二叉樹。...