給定乙個順序儲存的線性表,請設計乙個演算法查詢該線性表中最長的連續遞增子串行。例如,(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 線性表是一種典型的線性結構,也是一種最常用的資料結構。線性表包括順序儲存結構和來鏈式儲存結構兩種,其中鏈式儲存結構的鍊錶正是上學期學過一點,在運用上的話,原理是懂了,但是運用起來還是 有點欠佳。剛開始做對鍊錶的一些操作方法有點不清楚,還有就是這學期涉及到時間...