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