資料結構 單人名單

2021-09-07 02:13:55 字數 1106 閱讀 6257

在主題列表的臉,大部分的人(包含自己)他們是非常膽小,由於這是必然要面對的指標。

今天,我意識到一些議題上的列表操作。

首先,定義單鏈表中的節點:

注:上述的刪除鍊錶函式是必須的。否則記憶體洩露將會是最大的問題。

[updated]:上述刪除鍊錶的操作是有問題的,傳入的引數必須是指標的指標或者是引用。或者返回head。由於須要將head指標置為空。這利用傳值呼叫是辦不到的。

接下來。定義鍊錶的一些操作:

1 返回倒數第k個節點:

//有待更新

2 逆置鍊錶;依次取出原煉表中的元素,將其插入到新鍊錶的頭部.

注意。在逆置單鏈表的過程中,我犯了乙個錯誤,見上述**凝視:

3 推斷鍊錶是否是回文:

當然,推斷回文還有其它方法,只是我僅僅想到這個,就直接實現了。

4 將鍊錶的元素依據某個pivot進行partition,這能夠用作鍊錶快排的函式。

5 將兩個鍊錶中的元素相加,分為兩個版本號,第乙個是:

高位在表頭。那麼先將鍊錶長度補成一致,再進行遞迴呼叫就可以。

低位在表頭。

直接相加就可以,僅僅須要處理最後元素可能的進製!!

6 推斷乙個鍊錶中是否有環,假設有。返回環的起點。假設沒有,直接返回,

首先。推斷乙個鍊錶是否有環,典型的追及問題,乙個快指標fast,每次走兩步,慢指標slow,每次走一步。

假設存在環,則慢指標一定會在進入環的第一圈內就與快指標相遇。假設不是第一圈,也就意味著,慢指標在第一圈時,會被快指標追上

並超過,顯然是不可能的。假設在點i處超越,那麼此時慢指標在i處,快指標在i+1處,那麼前一步。快指標在i-1處。慢指標也在i-1處。這

與「指標不相遇」如果矛盾。

上述程式有些繁瑣,特別是在處理 fast與slow的關係時,以下的**比較簡單也比較直觀

ps:全部**的易錯點均在**凝視中~~~~

資料結構實驗之排序七 選課名單

隨著學校規模的擴大,學生人數急劇增加,選課名單的輸出也成為乙個繁重的任務,我校目前有在校生3萬多名,兩千多門課程,請根據給定的學生選課清單輸出每門課的選課學生名單。輸入第一行給出兩個正整數n n 35000 和m m 2000 其中n是全校學生總數,m是課程總數,隨後給出n行,每行包括學生姓名拼音 ...

資料結構實驗之排序七 選課名單

time limit 1000ms memory limit 65536k 隨著學校規模的擴大,學生人數急劇增加,選課名單的輸出也成為乙個繁重的任務,我校目前有在校生3萬多名,兩千多門課程,請根據給定的學生選課清單輸出每門課的選課學生名單。輸入第一行給出兩個正整數n n 35000 和m m 200...

資料結構實驗之排序七 選課名單

資料結構實驗之排序七 選課名單 time limit 1000ms memory limit 65536k 隨著學校規模的擴大,學生人數急劇增加,選課名單的輸出也成為乙個繁重的任務,我校目前有在校生3萬多名,兩千多門課程,請根據給定的學生選課清單輸出每門課的選課學生名單。輸入第一行給出兩個正整數n ...