線性表的分類:
資料元素之間的關係:
ai-1領先於ai ,ai領先於ai+1 。稱ai-1是ai的直接前驅,ai+1是ai的直接後繼。
除第一元素a1外,均有唯一的前驅;除最後元素an外,均有唯一的後繼。
資料結構的一般定義:data structure=(d,l,s,o)
d=data(資料) l=logic(邏輯)s=storage(物理儲存)o=operation(基本操作)o是在邏輯結構上對資料結構或資料元素的一組基本運算,與具體實現無關,可以利用給定的基本操作構造更複雜的運算。
用一組位址連續的儲存單元依次存放線性表中的資料元素。
以「儲存位置相鄰」表示有序對i-1,ai>,即:loc(ai)=loc(ai-1)+d。d是乙個乙個資料元素所佔的儲存單位長度,用實體地址的相鄰關係來表示邏輯次序的相鄰。
實現例項(c語言描述):
#define list_init_size 100
#define listincrement 10
typedef struct sqlist sqlist;
//順序表
插入元素操作步驟:檢查插入位置是否合法,如果合法則繼續,否則退出;
判表是否已佔滿;因為事先靜態地分配空間,可能存在所分配儲存空間全部被占用的情況,此時也不能實現插入;
若前面檢查通過則資料元素依次向後移動乙個位置;為避免覆蓋原資料,應從最後乙個開始向前依次移動;
新資料元素放到恰當位置;
表長加 1。
演算法實現:
status list_insert
(listptr l,
int pos,elemtype elem)
return status;
}
刪除元素操作步驟:檢查刪除位置是否合法;
若檢查通過,資料元素依次向前移動乙個位置;
表長減1。
演算法實現:
status list_remove
(listptr l,
int pos)
return status;
}
用一組位址任意的儲存單元存放線性表中的資料元素。
資料域(資料元素)+指標域(指示後繼元素儲存位置)= 結點
以「結點的序列」表示線性表,稱為鍊錶。
邏輯結構:(a1,a2,…,ai,…,an)
物理結構:
以線性表中第乙個資料元素a1的儲存位址作為線性表的位址,稱為線性表的頭指標。
有時為了操作方便,在第乙個結點之前虛加乙個「頭結點」,並用鍊錶的頭指標指向頭結點,稱為帶頭結點的單鏈表。
型別定義
typedef
struct node listnode,
*listnodeptr;
typedef listnodeptr list,
*listptr;
變數定義和使用
listnode n1,n2;
// 定義兩個結點變數
listnodeptr p=
&n1;
// 定義乙個指向結點的指標變數p,並存放n1的位址(指標)
n1.nest=
&n2;
// 結點n1的指標域存放結點n2的位址
list l;
// 定義乙個單鏈表l
在單鏈表中獲取第pos個元素
listnode list_retrieve
(listptr l,
int pos)
if(node == null)
return null;
return node;
}
插入操作步驟:找到ai-1的位置;
構造乙個資料域為elem的新結點;
將其掛在單鏈表上。
演算法實現:
status list_insert
(listptr l,
int pos,elemtype elem)
else status=fatal;
}return status;
}
刪除操作步驟:求得ai-1的指標p;
修改ai-1的後繼域為ai+1的位址;
釋放第pos個結點所佔的儲存空間。
演算法實現:
status list_remove
(listptr l,
int pos)
return status;
}
線性表基礎
一元多項式的表示 由於每個非零項由設計兩個資訊 係數和指數 1.用結構體陣列表示 2.鍊錶儲存 每個節點中存放係數和指數 定義 由同型別資料元素構成有序序列的線性結構 1.表中元素個數為線性表的長度 2.線性表沒有元素時為空表 3.表起始位置為表頭,表結束位置為表尾 線性表的順序儲存又稱為順序表。它...
線性表之單鏈表基礎
一.指標帶頭結點 點頭結點的單鏈表所具有的優點 1.第乙個結點的操作和表中其它節點的操作相一致,無需進行特殊處理 2.無論鍊錶是否為空,都有乙個頭節點,因此空表和非空表的處理也就統一了。二.單鏈表的特點 當訪問過乙個節點後,只能接著訪問它的後繼節點,而無法訪問它的前趨節點。三.下面就直接上程式了 i...
《軟體技術基礎》之《詞法分析》
詞法分析器的輸出形式 詞法分析器的結構 符號的識別 詞法分析器的實現 符號表詞法分析器在編譯器負責 詞法分析器不斷地讀取輸入串 原始檔 直到識別出下乙個符合單詞模式的字串 詞素 詞法分析器根據此 符合單詞模式的字串 生成下乙個單詞,將單詞流的輸出形成乙個輸出檔案,作為語法分析器的輸入。語法分析器呼叫...