DS部落格作業02 線性表

2022-05-17 18:18:43 字數 2422 閱讀 2233

線性表的學習讓我最大的感受就是聽得懂,看得懂,不會用。pta打起來是很困難,如果沒有書本上的**參考,很難完成一些稍微難點的,就是簡單的頭插法,尾插法是能夠熟悉的運用,我覺得最大的困難是難以銜接上,時不時就出現野指標,箭頭一不注意就不知道指向那裡去了,我覺得這一章的學習確實不是很好理解,在做題目的時候一定要準備草稿紙,畫畫鏈的變化形式,不然很容易錯誤,很多時候畫鏈幫忙理解,會容易很多。而且在練習pta的時候,要注重一些基礎**的套用,很多方法換湯不換藥,可以背背**。

6-1 jmu-ds-區間刪除資料

q1:一開始以為題目的意思是不需要排序的,直接刪除區間的裡面的元素就行,

a1:發現按這個意思打出來提交沒分,所以加了氣泡排序。先把無序的順序表變成有序表在去處理

q2:氣泡排序完後,又以為是區間都是順序表找得到的,結果按這個思路,只能得一半分

a2:新增了區間不屬於順序表裡面元素的情況

q3:在尋找不屬於順序表元素的區間座標是,找左區間的時候找到就記錄,還是沒有得滿分,因為左區間在等與不等的情況下區間下標會有差別。

a3:把左區間分了2種情況,相等的時候直接記錄,不等的時候要下標往前加一

6-8 jmu-ds-鍊錶倒數第m個數

q1:一開始沒有判斷不合法的情況沒有返回-1,直接cout 資料

a1:改用return 加了一句if語句不合法就return -1;

6-10 jmu-ds-有序鍊錶的插入刪除

q1:出現多次提交為0分的問題,查詢了很多遍**,沒有解決。

a1:請求同學幫忙,原來是在建鏈的時候頭節點沒有給置域為null,但是後面函式用的時候也直接結點相等,導致鏈不能連線起來。更改新增置域,後成功。

q2:還有乙個問題,刪除後鍊錶為空,輸不出來。

a2:開頭加了一句if判斷空鏈。結果可以輸出。

查詢單鏈表的中間節點,要求只能遍歷一次;

查詢單鏈表的指定節點,我們可以通過不斷遍歷的到,但是題目要求只能遍歷一次,那麼我們原來的方法就不行了,這樣我們就需要尋找新的途徑。要解決這個問題,就需要應用快慢指標問題。

定義兩個指標,他們是fast和slow,開始他們都指向頭節點,然後讓他們同時遍歷,但是每次fast走兩步,即fast=fast->next->next,讓slow走一步,即slow=slow->next,然後當fast走到最後的時候,slow所指的節點就是中間節點,這樣我們就實現了遍歷一次查詢單鏈表的中間節點。

這個快慢指標我是在一年的天梯賽題集看到的。它是一種演算法,這種演算法對**執行的要求非常高,可以處理很多要求只能遍歷一次的問題,比如這個題目就是對這種演算法的完美解釋。兩個指標搭配,可謂幹活不累,我學習完這種方法後,想起來這次pta裡面的一道題目,查詢單鏈表倒數第k個節點。似乎也可以用快慢指標來解決了,fast指標先走k步,slow在開始走,fast指標走完,slow指標所指的就是倒數k個結點,這樣又一次就可以把題目解決,今後處理這種問題,我要考慮用到這種方法,會簡便很多。

DS部落格作業02 線性表

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

DS部落格作業02 線性表

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

DS部落格作業02 線性表

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