// 根據no編號值進行排序,將節點新增到指定的位置
public
void
addherosort
(heronode heronode)
if(temp.next.no > heronode.no)
if(temp.next.no == heronode.no)
temp = temp.next;}if
(flag)
else
}
拓展:當傳入的值為頭結點時,對此鍊錶進行遍歷,將**新增到上面的方法中,可以實現鍊錶的排序
/**
* 分析:倒數第k個節點就是正數第size - k + 1個節點,這裡size表示這個鍊錶的長度
*/public heronode getheronode
(heronode head,
int k)
int size =
getlength
(head);if
(k <=
0|| k > size)
heronode temp = head.next;
// 表示第乙個節點
for(
int i =
1; i < size - k +
1; i++
)return temp;
}
1、建立乙個反轉後鍊錶的頭結點,遍歷原有鍊錶,將原有鍊錶的每乙個值都新增在新煉表頭結點的後面實現反轉
public
void
reversenode4
(heronode head)
heronode cur = head.next;
heronode next;
heronode reservenodehead =
newheronode()
;while
(cur != null)
head.next = reservenodehead.next;
}
同上一樣的方式,不建立新的節點,直接在原鍊錶的頭結點上進行插入,反轉
public
void
reversenode3
(heronode head)
heronode cur = head.next;
heronode next;
head.next = null;
while
(cur != null)
}
方式二:不建立頭結點,遍歷原始鍊錶的每乙個節點,從後向前建立新的鍊錶
public
void
reversenode2
(heronode head)
heronode cur = head.next;
heronode next;
heronode first = null;
while
(cur != null)
head.next = first;
}
方式三:迴圈遍歷多次,每次獲取原始鍊錶的最後乙個節點,把這個節點新增到新的鍊錶中,並刪除原鍊錶的最後乙個節點,再次遍歷,直到原煉表為空
public heronode reversenode
(heronode head)
singlelinkedlist list =
newsinglelinkedlist()
;;while
(head.next.next != null)
list.
addhero
(temp.next)
; temp.next = null;
} list.
addhero
(head.next)
;return list.
gethead()
;}
雙向鍊錶按順序新增的注意點
雙向鍊錶按順序新增node的時候,要先處理node後面的指標,再處理node前面的指標,原因在於 如果先把node和鍊錶前半截連起來,鍊錶前半截指向鍊錶後半截的指標就沒了,這樣後半截鍊錶就找不到了 先把node和鍊錶後半截連起來,這樣由於node是可以直接找到的,所以可以進行將node和鍊錶前半截連...
python實現獲取單向鍊錶倒數第k個結點的值示例
初始化鍊錶的結點 class node def init self,itedqhejm self.item item self.next none 傳入頭結點,獲取整個鍊錶的長度 def length headnode if headnode none return none count 0 cur...
13 輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點
題目 輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點。鍊錶的倒數第0個結點為鍊錶的尾指標。方法一 假設整個鍊錶有 n個結點,那麼倒數第 k個結點是從頭結點開始的第 n k 1 個結點 從 0開始計數 如果我們能夠得到鍊錶中結點的個數 n,那我們只要從頭結點開始往後走 n k 1 步就可以了。如何得到結...