(単一チェーンテーブルの本題について)テーブルヘッダノード付き単一チェーンテーブルが知られています...チェーンテーブルの最後からk番目の位置のノードを検索するために、できるだけ効率的なアルゴリズムを設計してください.
本題は既知のヘッダーノードを有する単一チェーンテーブルを記述し、ノード構造は
data
next
チェーンテーブルはヘッダポインタheadのみを与えたと仮定する.チェーンテーブルを変更しない前提で、できるだけ効率的なアルゴリズムを設計して、チェーンテーブルの最後からk番目の位置のノードを検索してください.検索に成功すると、そのノードのdata値を出力し、1を返します.そうでなければ、0を返します.
标题:2人の子供が石ハサミ布のゲームをしていて、誰が勝ったのか、誰が一歩前進したのかと見ることができます.
出発地も1歩だと仮定すると、1番の子供はもうk歩歩いたが、2番の子供は勝ったことがない.ゲームがそんなに退屈ではないように、次は石ハサミ布で誰が勝っても、2人の子供は1番の子供がゴールまで歩いて、ゲームは終わります.
以上はすべて仮想的な状況で発生し,ただテーマの具象化のためである.
コード:
data
next
チェーンテーブルはヘッダポインタheadのみを与えたと仮定する.チェーンテーブルを変更しない前提で、できるだけ効率的なアルゴリズムを設計して、チェーンテーブルの最後からk番目の位置のノードを検索してください.検索に成功すると、そのノードのdata値を出力し、1を返します.そうでなければ、0を返します.
标题:2人の子供が石ハサミ布のゲームをしていて、誰が勝ったのか、誰が一歩前進したのかと見ることができます.
出発地も1歩だと仮定すると、1番の子供はもうk歩歩いたが、2番の子供は勝ったことがない.ゲームがそんなに退屈ではないように、次は石ハサミ布で誰が勝っても、2人の子供は1番の子供がゴールまで歩いて、ゲームは終わります.
以上はすべて仮想的な状況で発生し,ただテーマの具象化のためである.
コード:
int playGame(ListNode* head, int k)
{
ListNode* p, *q;
p = head; //p q k
q = head->next; //q
int i = 1; //i
while (q != NULL)
{
q = q->next;
++i; // q ,i 1
if (i > k) // i k ,p
p = p->next;
}
if (p == head) //p , k
return 0;
else // p , k 。 data
{
cout << p->data << endl;
return 1;
}
}