鍊錶操作時的一些注意事項

2021-05-24 14:48:45 字數 423 閱讀 2371

最近寫8數碼程式,中間用到了鍊錶的操作。中間遇到了一些莫名奇怪的錯誤,導致除錯了好長時間才弄出結果,具體有以下幾點。

1、建立鍊錶一定要有哨兵節點,這樣有利於鍊錶的插入操作(掃瞄時兩個指標,current指向當前掃瞄到的節點,prev指向其前趨節點),插入時直接插入到prev後面即可。

2、當有多個函式同時對鍊錶節點進行操作時,比如有兩個鍊錶l1和l2,現在想從l1中拿出乙個節點放到l2中,這時一定注意,這個取出的節點的next域一定置空,當這個節點插入l2尾部時,它的next仍然指向l1中某個節點,從而在掃瞄l2時,誤將l1中的部分也掃瞄一遍,造成錯誤。更嚴重的是有時可能導致迴圈,很難除錯。下面是8數碼問題中對鍊錶操作相關的兩個函式,就是因為少了一句null操作,讓我多用了好長時間除錯。

上面**中temp->null是重點,很簡單,但容易忽略,今天記下來,方便以後檢視。

一些注意事項

0.解題思路 a.普通思路 b.遞迴 bfs dfs c.動態規劃 比遞迴快 d.雙指標 比for迴圈快 如 快慢指標方法 e.用棧 1.陣列初始化 int a new int 5 a 0 預設為0.二維陣列也一樣。boolean b new boolean 5 b 0 預設為false.strin...

php XPATH一些注意事項

40集 建立乙個dom物件並讀取xml檔案到記憶體中 dom new domdocument 1.0 utf 8 dom load book.xml 建立乙個xpath物件 xpath new domxpath dom sql bookstore book 1 title 注意此處路徑數字從1開始,...

vue一些注意事項

1.生命週期鉤子的this上下文指向呼叫它的 vue 例項。不要在選項屬性或 上使用箭頭函式,比如 created console.log this.a 或 vm.watch a newvalue this.mymethod 因為箭頭函式是和父級上下文繫結在一起的,this 不會是如你所預期的 vu...