[size=x-small]線性表是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。因此,線性表這種資料結構在實際應用中是廣泛採用的一種資料結構。[/size]
在實際應用中,[b][color=red]線性表都是以棧、佇列、字串、陣列等特殊線性表的形式來使用的[/color][/b]。由於這些特殊線性表都具有各自的特性,因此,掌握這些特殊線性表的特性,對於資料運算的可靠性和提高操作效率都是至關重要的。 線性表是乙個線性結構,它是乙個含有n≥0個結點的有限序列,對於其中的結點,有且僅有乙個開始結點沒有前驅但有乙個後繼結點,有且僅有乙個終端結點沒有後繼但有乙個前驅結點,其它的結點都有且僅有乙個前驅和乙個後繼結點。一般地,乙個線性表可以表示成乙個線性序列:k1,k2,…,kn,其中k1是開始結點,kn是終端結點。
[b]基本特徵[/b]
線性結構的基本特徵為:
1.集合中必存在唯一的乙個「第一元素」;
2.集合中必存在唯一的乙個 「最後元素」 ;
3.除最後乙個元素之外,均有 唯一的後繼(後件);
4.除第乙個元素之外,均有 唯一的前驅(前件)。
由n(n≥0)個資料元素(結點)a1,a2,…,an組成的有限序列。
資料元素的個數n定義為表的長度。 當n=0時稱為空表。
常常將非空的線性表(n>0)記作: (a1,a2,…an) 資料元素ai(1≦i≦n)只是乙個抽象的符號,其具體含義在不同的情況下可以不同。
線性表的基本操作
1)setnull(l) 置空表
2)length(l) 求表長度;求表中元素個數
3)get(l,i) 取表中第i個元素(1≤i≤n)
4)prior(l,i) 取i的前趨元素
5)next(l,i) 取i的後繼元素
6)locate(l,x) 返回指定元素在表中的位置
7)insert(l,i,x)插入元素
8)delete(l,x) 刪除元素
9)empty(l) 判別表是否為空。
在實現線性表資料元素的儲存方面,一般可用順序儲存結構和鏈式儲存結構兩種方法。
[b]棧(stack)在電腦科學中是限定僅在表尾進行插入或刪除操作的線性表。
棧是一種資料結構,是只能在某一端插入和刪除的特殊線性表。它按照後進先出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。
棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(push),刪除則稱為退棧(pop)。
棧也稱為後進先出表(lifo--last in first out表)。
棧可以用來在函式呼叫的時候儲存斷點,做遞迴時要用到棧![/b]
佇列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。
進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。
佇列中沒有元素時,稱為空佇列。
在佇列這種資料結構中,最先插入在元素將是最先被刪除;反之最後插入的元素將最後被刪除,因此佇列又稱為「先進先出」(fifo—first in first out)的線性表。
佇列空的條件:
front=rear
佇列滿的條件:
rear = maxsize
串是零個或多個字元組成的有限序列。一般記s=『a1a2....an 』其中,s是串名,單引號括起的字串行是串值;ai(1〈=i〈=n)可以是字母,數字或其它字元;串中所包含的字元個數為該串的長度。長度為零的串稱為空串,它不包含任何字元。 串中任意個連續的字元組成的子串行稱為該串的子串。包含子串的相應地稱為主串。通常,把子串在主串中第一次出現時,子串的第一次字元在主串中的序號,定義為子串在主串中的序號。 稱兩個串是相等的,當且僅當這兩個串的值相等。也就是說,只有當兩個串的長度相等,並且各個對應位置的字元都相等時才相等。 值得一提的是,串值必須用一對單引號括起來,但單引號本身不屬於。
注意:此處特別提到匹配演算法:樸素演算法和kmp改進型演算法。具體參見例子
5 1線性表概述
線性表是由n個元素a1,a2 an組成的有限序列。對於線性表的某個元素ai來說,稱其前面的元素a i 1 為直接前驅,後面的元素a i 1 為直接後繼。線性表的每個元素最多有乙個直接前驅和乙個直接後繼,這是線性表的特點。線性表常用基本運算有6個 1 初始化線性表 建立線性表空表 list 建構函式建...
鏈式線性表和順序線性表
在這裡插入 片 線性表的儲存結構 typedef struct seqlist typedef struct seqlist 順序表基本操作 初始化順序表在這裡插入 片 intseqlist init seqlist list,int size 插入資料元素在這裡插入 片 intseqlist in...
線性表演算法題庫 線性表習題
鍊錶。若指標p指向某結點時,能夠根據該指標找到其直接後繼,能夠順後繼指標鏈找到p結點後的結點。但是由於不知道其頭指標,所以無法訪問到p指標指向的結點的直接前趨。因此無法刪去該結點。2.雙鏈表。由於這樣的鍊錶提供雙向指標,根據p結點的前趨指標和後繼指標可以查詢到其直接前趨和直接後繼,從而可以刪除該結點...