鍊錶的倒數第k個節點:即鍊錶從頭開始的第(n-k+1)個節點;n為鍊錶節點總數。
(1) 遍歷兩次鍊錶:第一次統計出鍊錶的節點數,第二次從頭節點開始往後走(n-k+1)步即是倒數第k個節點;
(2) 遍歷一次鍊錶:使用兩個指標p1和p2,開始均指向頭節點;第乙個指標p1從頭節點開始往後走(k-1)步,第二個指標p2保持不動;從第k步起,兩個指標p1和p2同時往後移動,由於兩個指標的距離一直保持在(k-1)步,所以當指標p1到達尾節點時,指標p2正好指向倒數第k個節點。
**如下:
listnode* findkthtotail(listnode* plisthead, unsigned int k)
while(p1->next!=nullptr)
return p2;
}
鍊錶倒數第k個節點
兩個指標一前一後,相距k即可。include include using namespace std struct linknode typedef linknode linklist void insertlist linklist list int data else linknode rese...
鍊錶 倒數第k個節點
問題 刪除倒數第k個節點 鏈結 雙指標法,開始時p1,p2都指向頭節點,先讓p2走k步,然後p1和p2一起走,當p2指向null時,p1就指向倒數第k個節點了 definition for singly linked list.struct listnode class solution retur...
鍊錶的倒數第K個節點
題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個結點。package com.edu class linknode public class findkthtotail linknode head lst linknode kth ...