DS部落格作業02 線性表

2022-05-19 22:41:35 字數 2074 閱讀 1329

6-7 jmu-ds-單鏈表逆置 (15 分)

思路:遍歷鍊錶,讓原鍊錶的每乙個節點元素插入到新鍊錶裡面

**:定義兩個節點p和q;

給p申請空間;

並且讓p的下乙個節點置為空

while(遍歷鍊錶)

申請迴圈節點

l=l的next

迴圈賦值l的data給q的data

把p的next節點接在q的後面

讓q又能和p迴圈

最後讓l=p的頭

一開始想著這個思路就去打了,不過發現發現測試點過不去,後面問了下室友發現了問題改了幾次踩過了

6-8 jmu-ds-鍊錶倒數第m個數 (20 分)

思路:先找到鍊錶的長度,最後用乙個迴圈找到長度減m+1就是倒數第m個數

偽**:

定義乙個節點p,和長度變數len,讓p始終為l的頭

while遍歷鍊錶得到鍊錶長度len

if(m>len||m<=0)

for(int i=0;inext;

return 找到的第m個資料

個人覺得這個還是聽好做的特別是如果是陣列的話就感覺還行,換鍊錶的話就出現了問題有錯誤或者m的值沒有考慮到,在dev上檢查了幾次還好找到了

6-10 jmu-ds-有序鍊錶的插入刪除 (15 分)

思路:因為是有序表,所以只需要遍歷並且同時把e與各個元素比較找到那個插入的位置,同時記錄下當時的位置,把資料插入就好了;

需要乙個是否刪除成功的標誌flag,同樣遍歷鍊錶,比較當與輸入e相同的資料時把那個節點的前乙個與後乙個接起來達到刪除的目的

偽**:

定義節點p和pre,和標誌變數flag,讓p始終為l的頭

while遍歷鍊錶

iif(ep->next->data)

flag變化

p->next接到pre後

pre->next接到p->next後

break;

}p=p->next;

if(l鍊錶為空)無返回

if(flag0)

cout找不到

這個題目感覺是前面兩個小題和起來協調一下函式就還好,不過實際操作嘛emmm不是那麼好做,不過發現兩個函式其實很像,就是在最關鍵的那一句**換一下,再在結尾的節點頭換一下就好了

6-7 jmu-ds-單鏈表逆置 (15 分)

思路:利用before和p實現兩個節點之間的逆轉,原先是before下乙個指向p,修改成p下乙個指向before,有點像上學期的兩個元素互換位置用個index那種做法

我在解這個題的時候想法和這個很像,不過這個就很形象(像一對人在排隊,教官說向後轉那種感覺),我那個就感覺有點昏昏的。。

DS部落格作業02 線性表

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

DS部落格作業02 線性表

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

DS部落格作業02 線性表

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