資料結構讀書筆記

2021-06-17 15:37:18 字數 1230 閱讀 3725

/*首先有個關於指標的問題:

如果函式傳進來乙個指標*p,函式裡操作p不會影響原來的值,而如果有*或者->才會改變

比如:malloc的時候傳入指標的指標才行;o(1)刪除節點時末尾必須要便利一遍;刪除頭指標要變為刪除第二個節點。

1.o(1)刪除指定位置的節點

如果為最後乙個節點還是必須遍歷一遍

2.倒數第k個節點

if(!phead || !k) return ;//k等於0都不行

節點數目少於k個

3.找鍊錶中間位置的節點

4.兩個有序鍊錶的合併

5.倒轉單向鍊錶

6.鍊錶的歸併排序

7.兩個鍊錶的第乙個公共節點

8.求鍊錶第乙個進入環的節點

如果用hasho(n)的時間空間;

遍歷的時候,反轉next指標,有環就回到頭指標了。但是修改了值;

設乙個快指標和慢指標,有環就相遇。注意快指標q=q->next;if(!q)return;

找出入口:

當fast若與slow相遇時,slow肯定沒有走遍歷完鍊錶,而fast已經在環內迴圈了n圈(1<=n)。

假設slow走了s步,則fast走了2s步(fast步數還等於s 加上在環上多轉的n圈),設環長為r,

則:s = nr設整個鍊錶長l,入口環與相遇點距離為x,起點到環入口點的距離為a。

a + x = nra + x = (n – 1)r +r = (n-1)r + l - aa = (n-1)r + (l – a – x)(l – a – x)

為相遇點到環入口點的距離,由此可知,從煉表頭到環入口點等於(n-1)迴圈內環+相遇點到環入口點

於是我們從煉表頭、與相遇點分別設乙個指標,每次各走一步,兩個指標必定相遇,

且相遇第一點為環入口點。

*/#include

#include

#include

using namespace std;

struct node;

node* add(node *phead, int val)

}void del(node *phead,int val)else

}if(pd != null)

}/*o(1)時間刪除乙個節點*/

void del(node *phead,node *ptobedeleted)elseelse}}

delete pd;

pd = null;

}

《資料結構》讀書筆記

2010年9月2日開始研究 資料結構基礎 這本書。為什麼要說是研究呢,一是覺得研究這個詞比較賞心悅目,總比 看 閱讀 之類的好聽多了。二是真的想把資料結構學好。488頁,看來有忙活的了!第一章 基本概述 生命週期各階段描述及理解 1.需求階段 所有人規模程式設計專案,都是從確定規範宣告開始,規範宣告...

資料結構讀書筆記2

一切為了 merge 1.大話資料結構 1.個人感覺,這一塊 大話資料結構 作者搞的略混。也有少許我不贊成的地方,會在之後的工作中,改正我認為不完美的地方。2.畢竟現在不是大師,改正過程中我會以實際執行為標準,並且查閱相關的大牛們編著的書籍。3.正如我開頭所說一切為了merge,形成自己的知識體系才...

大話資料結構讀書筆記

第一章 資料結構的定義 資料就夠是相互直接存在一種或多種特定關係的資料元素的集合 邏輯結構 集合結構 線性結構 樹形結構 圖形結構 第二章 演算法 1 演算法的特性 輸入 輸出 有窮性 確定性和可行性 2 演算法事假複雜度定義 在進行演算法分析時,語句總的次數t n 第三章1 線性表 定義 零個或多...