線性表
一、線性表的順序儲存
1、線性表採用順序儲存,必須占用一片連續的儲存單元;
2、線性表順序儲存結構是一種隨機訪問的儲存結構;
3、順序表在查詢指定序號的元素、讀取元素和在末尾插入元素最節省時間;
4、順序表中,在任何乙個位置插入元素的概率相同,則插入乙個元素所需移動的元素平均數——(n+1)/2;
5、順序表中,在任何乙個位置刪除元素的概率相同,則插入乙個元素所需移動的元素平均數——(n-1)/2;
二、線性表的鏈式儲存
1、線性表採用鏈式儲存,不必占用一片連續的儲存單元,連續與否均可;
2、線性表採用鏈式儲存,便於進行插入和刪除操作;
3、順序查詢不論在順序線性表中還是在鏈式線性表中的時間複雜度——o(n);
4、單鏈表中,增加乙個頭結點的目的是為了方便運算實現;
5、設乙個有序單鏈表中有n個結點,插入乙個新結點,單鏈表依然有序的時間複雜度為——o(n);
6、沒有頭結點的單鏈表,頭指標變數為head,判空的條件——head==0;有頭結點,判空的條件——head->next==0;
三、線性表的應用
1、棧與佇列
①棧和佇列的共同點是在端點處插入和刪除元素
②棧的插入和刪除操作都是在棧頂進行
2、棧——限定只在表的一端(表尾)進行插入和刪除操作的線性表;
允許插入和刪除的一端稱為棧頂(top),另一端稱為棧底(bottom),這一端被固定。
1)儲存結構:
①順序儲存對應一組操作:順序棧
順序棧(s)的相關考點
a、順序棧為空條件——s->top ==-1;
b、順序棧為滿條件——s->top == maxsize-1;
c、棧頂指標為top,將元素e入棧——
d、順序棧中壓入新元素,應當先移動棧頂指標,再存入元素
e、順序棧中進行退棧操作時,先取出元素,後移動棧頂指標
f、假定利用陣列 a[n]順序儲存乙個棧,用 top 表示棧頂指標,用 top==n+l 表示棧空,該陣列所能
儲存的棧的最大長度為 n,則表示棧滿的條件是top == 1
g、棧 s 和佇列 q 的初始狀態為空,元素 a,b,c,d,e,f 依次通過棧 s,乙個 元素出棧後即進佇列 q,
若 6 個元素出隊的序列是 a,c,f,e,d,b,則棧 s 的容量至少應該是4
h、若乙個棧的輸入序列為 1,2,3,…,n,輸出序列的第乙個元素是 i, 則第 i 個輸出的元素是不確定的
i、設有乙個棧,元素依次進棧的順序為 a、b、c、d、e。不可能的出棧序列是:e,a,b,c,d
②鏈式儲存對應一組操作:鏈棧
鏈棧的相關考點
a、向乙個棧頂指標為 h 的帶頭結點的鏈棧中插入指標 s 所指的結點時, 應執行(s->next=h->next ;h->next=s )操作
b、只有表頭指標沒有表尾指標的迴圈單鏈表是最不適合用作鏈棧的鍊錶
2)特性:後進先出
3、佇列——限定在表的一端(隊頭front)進行刪除,在表的另一端(隊尾rear)進行插入操作的線性表
1)儲存結構:
①順序儲存對應一組操作:順序佇列、迴圈佇列
迴圈佇列的相關考點
a、大小為 6 的陣列來實現迴圈佇列,且當前 rear 和 front 的值分 別為 0 和 3,當從佇列中刪除
乙個元素,再加入兩個元素後,rear 和 front 的值分別為4和2
b、front 為隊頭指標,rear 為隊尾指標,其中front 指向隊頭元素,rear指向隊尾元素的下乙個位
置,m為最大空間。出隊操作為 front=(front+1)%(m+1)
c、若順序儲存的迴圈佇列的 queuemaxsize=n,則該佇列最多可儲存 (n-1 )個元素。
②鏈式儲存對應一組操作:鏈佇列
鏈式佇列的相關考點
a、用鏈結方式儲存的佇列,在進行插入運算時,頭、尾指標可能都要修改
b、用迴圈鍊錶表示佇列,設佇列的長度為 n,若只設尾指標,則出隊和入 隊的時間複雜度分別為. o(1),o(1)
c、 front 表示鏈式佇列的隊頭指標, rear 表示鏈式隊 列的隊尾指標,指標變數 s 指向將要入隊
列的結點 x,則入佇列的操作序列為rear->next=s;rear=s
2)特性:先進先出
4、棧與佇列特性
2、棧:棧的計算(考點):
1、進棧出棧順序問題
給出一定元素的進棧順序,求這些元素不可能出棧的順序情況。
2、求棧至少多少的容量問題
給出一定元素的進棧順序和出棧順序,求至少需要多大的容量可以進行此操作。
3、求棧中元素
給出棧中bottom的位置和top的位置,求棧中的元素
如果bottom = 0,則元素個數為|top-bottom|。
注意:如果top中也存放元素,則元素個數為|top-bottom+1|
注意:在棧中bottom一端是被固定的。
4、棧中指標的位置
棧空時指標的具體位置:
top == 0,讓元素進入當前的棧,然後是再移動top指標;這時,top指標一直在現存元素棧頂的上乙個位置。
top == -1,先移動top指標,然後讓元素進入當前的棧;這時,top指標永遠指向當前元素的位置。
各情況的指標的具體位置:
注意此時定義的棧空的情形:
top == 0
出棧:top -- ,讀取元素
滿棧:top = 棧容量-1
進棧:進入元素,top++
3、佇列:
鏈佇列——鏈式儲存對應一組操作,且空間不必連續
兩個指標:
隊頭指標q.front指向頭結點
隊尾指標q.rear指向尾結點
初始態:
隊空條件:
頭指標和尾指標均指向頭結點
q.front = q.rear
迴圈佇列——順序儲存對應的操作,且空間連續
兩個指標:
q.front指向佇列頭元素
q.rear指向佇列尾元素的下乙個位置
初始態:
q.front = q.rear = 0
隊空條件:
q.front == q.rear
隊滿條件:
q.rear + 1)% max == q.front
入隊情況:
q.rear = (q.rear + 1)% max
出隊情況:
q.front = (q.front + 1)% max
求佇列中實際元素的個數:
q.rear - q.front + max )% max
5、 棧和佇列的應用
1)將乙個遞迴演算法改為對應的非遞迴演算法時,通常需要使用 棧
2)算術表示式 a+b*c-d/e 轉為字首表示式後為 -+a*bc/de
3)中綴表示式 a*(b+c)/(d-e+f)的字尾表示式是 abcdef*+/-+
線性表基礎
一元多項式的表示 由於每個非零項由設計兩個資訊 係數和指數 1.用結構體陣列表示 2.鍊錶儲存 每個節點中存放係數和指數 定義 由同型別資料元素構成有序序列的線性結構 1.表中元素個數為線性表的長度 2.線性表沒有元素時為空表 3.表起始位置為表頭,表結束位置為表尾 線性表的順序儲存又稱為順序表。它...
部落格作業02 線性表
給定乙個順序儲存的線性表,請設計乙個演算法查詢該線性表中最長的連續遞增子串行。例如,1,9,2,5,7,3,4,6,8,0 中最長的遞增子串行為 3,4,6,8 查詢最長連續遞增子串行函式 定義整型變數i,j表示迴圈變數,k用來作找到後新陣列下標 定義整型變數 maxlength 1 maxleng...
DS部落格作業02 線性表
方法,還有迴圈鍊錶和雙鏈表的建立,學習了這幾種鍊錶,在今後的使用鍊錶中有了更多的選擇,同時也提高了解部分題目的效率。在順序表這一方面,主要學習的是對順序表的插入和刪除操作,鍊錶也同樣是插入和刪除,再加上擴充套件的一些操作。這兩種線性表各有 其優缺點,在使用時還需要分情況考慮。插入函式listinse...