100題 找出鍊錶倒數第k個元素

2021-06-07 21:47:48 字數 1234 閱讀 9413

//查詢鍊錶中倒數第k個節點

#include using namespace std;

//定義鍊錶節點結構

struct listnode

;//建立不帶頭結點的單鏈表

void createlist(listnode *&head)

else

cin >> num;

} // return temp;

}//列印鍊錶

void printlist(listnode *head)

}//找到倒數第k個,也就是整數第n-k-1個

listnode *findk1(listnode *head,unsigned int k)

listnode *pcur = head;

//定義nnum,記錄鍊錶長度

unsigned int nnum = 0;

//求取鍊錶長度

while(pcur->next != null)

//if(nnum < k)

pcur = head;

for(unsigned int i=0; i < nnum-k; i++)

return pcur;

}//採用兩個指標,一前一後,相隔k個位置。

listnode *findk2(listnode *head,unsigned int k)

listnode *phead = head;

listnode *pbehind = null;

for(unsigned int i=0; inext != null)

else

} pbehind = head;

while(phead->next != null)

return pbehind;

}//測試用例

void main()

{ listnode *list = null;

cout << "建立鍊錶:";

createlist(list);

cout << "鍊錶元素:";

printlist(list);

listnode *p = findk1(list,4);

cout << endl <<"倒數第四個:" 執行結果:

建立鍊錶:1 2 3 4 5 6 7 8 9 0

鍊錶元素:1 2 3 4 5 6 7 8 9

倒數第四個:5

倒數第五個:4

請按任意鍵繼續. . .

找出鍊錶倒數第K個元素

思路 可設兩個頭指標p1和p2,當p2開始向前走,當走的步數為k時,p1開始走,此時當p2走到結尾時,p1所指的位置正好為倒數第k個元素的位置 class listnode override public string tostring return sb.tostring public stati...

鍊錶中倒數第k個元素

時間限制 1秒 空間限制 32768k 熱度指數 301751 本題知識點 鍊錶輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。class solution while phead next null return ptail 解題思路 傳統方法是從左到右遍歷一遍,得出鍊錶中的結點總數,然後計算倒數第k個...

鍊錶 獲取鍊錶的倒數第k個元素

思路1 暴力 先暴力一次鍊錶,記錄鍊錶的長度n,第二次遍歷n k 1個元素,返回,一共需要2n 1 k個 思路2 兩個指標,左右指標相差k 1個距離,有指標到達鍊錶末尾時,做指標指向倒數第k個元素.經典思路,兩個指標相差k個間隔 思路2實現 public static node getfindnfr...