部落格作業02 線性表

2022-05-29 14:24:07 字數 2023 閱讀 5132

給定乙個順序儲存的線性表,請設計乙個演算法查詢該線性表中最長的連續遞增子串行。

例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子串行為(3,4,6,8)

/*查詢最長連續遞增子串行函式 */

定義整型變數i,j表示迴圈變數,k用來作找到後新陣列下標

定義整型變數 maxlength=1; //maxlength為1, 表示長度只有頭部

定義整型 a[maxsize]存放最長連續遞增子串行

for i=0 to l->length

a[i]=1; //表示長度只有頭部

for i=0 to l->length-1

for i=0 to l->length-1

如果 前乙個元素 > 後乙個元素

a[i]++

否則 break

找到後:

for i=0 to l->length

如果 a[i] > maxlength,k=i

如果 長度為1,直接輸出此數

如果 長度為0,return

輸出最後結果

本題要求實現乙個函式,將給定單向鍊錶逆置,即表頭置為表尾,表尾置為表頭。鍊錶為帶頭結點鍊錶。

(單鏈表基本操作根據老師發的變化。)

/*逆置函式void reverselist(list &l)呼叫 */

如果鍊錶l 為空表||只有有乙個元素

輸出 null,不逆置

定義指標p,q listnode *p,*q移動

令p指向l的第二個資料

while(p)

q 儲存下p的值 ,p移動

p的next指向前乙個元素

l->next的值不斷變化,迴圈

先類似7-1將給出的兩個鍊錶s1,s2合併,用鍊錶s3裝好

/*查詢中位數int find(linklist s3, int m,int n)呼叫*/

m為中位數下標

定義整型變數j=0 表示s3下標

定義整型變數length=2*n表示合併後s3長度

定義 linklist p=s3方便進行移動

如果 p為空 return 0

當 j<=m 時

j遞增p移動

直到j==m找到

返回找到的下標所指的值

DS部落格作業02 線性表

方法,還有迴圈鍊錶和雙鏈表的建立,學習了這幾種鍊錶,在今後的使用鍊錶中有了更多的選擇,同時也提高了解部分題目的效率。在順序表這一方面,主要學習的是對順序表的插入和刪除操作,鍊錶也同樣是插入和刪除,再加上擴充套件的一些操作。這兩種線性表各有 其優缺點,在使用時還需要分情況考慮。插入函式listinse...

DS部落格作業02 線性表

這階段學習學的是線性表,學習線性表的兩種儲存順序 鍊錶和順序表,體會了兩者儲存結構之間的區別,通過對順序表,單鏈表,雙鏈表,迴圈鍊錶,有序表的特點的了解,和學習它們的演算法設計方法,綜合運用線性表解決一些問題,在查資料時,也領悟一點單雙鏈表的在一些方面使用的優劣,對線性表的知識更加加深一點。void...

DS部落格作業02 線性表

1.2談談你對線性表的認識及學習體會 1 線性表是一種典型的線性結構,也是一種最常用的資料結構。線性表包括順序儲存結構和來鏈式儲存結構兩種,其中鏈式儲存結構的鍊錶正是上學期學過一點,在運用上的話,原理是懂了,但是運用起來還是 有點欠佳。剛開始做對鍊錶的一些操作方法有點不清楚,還有就是這學期涉及到時間...