以下は、アルゴリズム&データ構造の基礎を学んでいるwww.tutorialspoint.comのコードです。このチュートリアルコードでは、ex。配列への挿入操作cのコードの理解/明確化のロジック
#include <stdio.h>
main() {
int LA[] = {1,3,5,7,8};
int item = 10, k = 3, n = 5;
int i = 0, j = n;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
n = n + 1;
while(j >= k){
LA[j+1] = LA[j];
j = j - 1;
}
LA[k] = item;
printf("The array elements after insertion :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
私は、配列のインデックスとしてkの与えられた値で新しい項目を追加するというコードを理解しています。そして、コンパイル時にエラーなしで正常に動作します。&が実行されます。私に混乱を招くのはwhileループの行LA[j+1] = LA[j]
の論理です。
私の理解では、配列のサイズを宣言する必要があります。しかし、ex。コードint LA[] = {1,3,5,7,8};
ブラケット[]が空です。だから私はそれが固定サイズであるか、またはより多くの要素が配列に追加できるかどうかわからない。
n
の値は5(配列の長さ)です。配列宣言の要素数は5であり、配列のインデックスは0〜4です。
LA[j + 1]
はLA[6]
です。したがって、LA[j + 1]
はです。配列は0から4までの5つの要素しか持っていません。したがって、配列にさらに要素を追加できると仮定しても、LA[j]
の値はどのようにしてLA[j + 1]
になりますか? LA [6] = LA [5]と言っていますが、最後のインデックスが4であるため、インデックス5には何もありません。
Googleで検索しようとしましたが、コードまたはコードの一部。コードで検索するのは役に立たなかった。
ご理解ください。ありがとうございました。
と同等です。いくつかのコードを理解していないときは、デバッガを使用してそのステップを実行することができます。ロジックをもっと明確にするのに役立ちます。 –
www.tutorialspoint.comはこれを実際に良いコードの例として提供していますか、それともあなたが修正するはずの非常に悪いコードの例ですか?このコードが良いコードの例として提供されているなら、私は 'c'を学ぶ別の場所を見つけることを提案します。 – 4386427
私はアルゴリズムとデータ構造を学んでいます。それらによって提供されるコードが実行され、配列にもう1つの要素が追加されます。私はコードをコンパイルして実行しました。私はまだCコードをデバッグする方法を知らない。 googleとしよう –