【データ構造】単一チェーンテーブルデータを逆順に出力する
1180 ワード
考え方:再帰.形式は(このデータを出力した後のチェーン値)+このデータを出力します.
特に、ヘッドノードを持つシングルチェーンテーブルでは、前に進むべきビットがあり、チェーンテーブルがスタートノードを指します.コードは以下の通りです
再帰はとても教条的です.
1.まず一般的な状況を考慮して、このデータを出力したら、再度この関数を呼び出すべきです.
特に、ヘッドノードを持つシングルチェーンテーブルでは、前に進むべきビットがあり、チェーンテーブルがスタートノードを指します.コードは以下の通りです
void printDeverse_main(LinkList List)
{
List = List->next;//
printDeverse(List);
}
再帰コード:void printDeverse(LinkList List)
{
if (List == NULL)
{
return;
}
if (List->next != NULL)
{
printDeverse(List->next);
cout << " " << List->data;
}
if (List->next == NULL)
{
cout<< List->data;
}
}
標準的な答えはより簡潔に見える:void reprint(LinkList List)
{
if (List != NULL)
{
reprint(List->next);
cout << List->data << " ";
}
}
分析:再帰はとても教条的です.
1.まず一般的な状況を考慮して、このデータを出力したら、再度この関数を呼び出すべきです.
if (List->next != NULL)
{
printDeverse(List->next);
cout << " " << List->data;
}
2.出力が完了したらこのデータがない場合、呼び出します. if (List->next == NULL)
{
cout<< List->data;
}
3.チェーンが空なら、 if (List == NULL)
{
return;
}
実はこの3つの状況は概況的には標準的な答えです.チェーンが空でない場合は再帰的に呼び出してデータを出力します.チェーンが空になったら、しません.簡潔明瞭である.私のは余計です.