データ構造は、物事の軍事顧問レベルなので、最初の要素のインデックスは1から開始している前にも言いました!
今日はについて話挿入や削除のアルゴリズムシーケンステーブル。
/ * 初期条件:直鎖状配列表はL、1 <= l <= LISTLENGTH存在する (L)を。* / / * 結果:L.におけるI + 1位置の前に新しいデータ要素eを挿入し、Lは長さ * / ステータスListInsert(SqListの *はL、int型I、elemType E)を { int型K; IF(L-> ==長MAXSIZE) // 次線形テーブルが一杯になっ { 戻りERROR; } IF(Iは< 1 || I > L->長さ+ 1) // iが範囲内にない { 戻りERROR; } IF(I <= L->長) // データ挿入位置がテーブルの最後でない場合 { / *データ要素を後退させる挿入する後に一つの位置* / 用(K = L->長さ- 1。 ; K> = I- 1。 ; K-- ) { L - >データ[K + 1 ] = L-> DATA [ K]; } } L - >データ[I- 1 ] = E; // に新しい要素 L->長++ ; 戻りOKを; }
実際には、多くの初心者は、直接コピーする場合は、このコードは、しかし、理由は私の個人的な時間の制約の実行されていない、私は孟は、以下のすべての新しいプログラムコードを知りたい場合は、完全なプログラムコードを記述しないであろう、メッセージを残してください、ありがとうございました!
実際には、この一目でアルゴリズム、および私は現在の長さの範囲内でなければならない注意挿入位置を支払うので、少しを持っているために挿入アルゴリズムの時間を書いて、長さ50の配列、7の現在の長さとして、我々はアルゴリズムの話を考えていました声明
(I <1 || i>の場合 // L->長さ+ 1) iが範囲内にない場合
、{
戻りERROR;
}
第二の点は、例えば、あなたは第五位置データに挿入する、我々はデータを必要とする[5]に挿入するデータの値を、元のデータを変更するには、[5]、彼は一歩下がった後の要素の後に。
/ *挿入した後、位置データ要素は* /後方に移動させる
ための(= L-K> 1の長さ; K> = 1-I; K--)
{
L->データ[K + 1] = L- >データ[K];
}
第三の点は、アルゴリズムの概念を区別するために、私は1から始まりますが、書き込みプログラム添え字cがゼロであるか、または実際にはテーブル内の最初の要素の順序はC言語であると言います
0番目の要素、あなたが結束注文できるようにC言語でデータとして表現を[1-1]; i番目の要素は[I-1]の一般的な表現であります
L->データ[I-1] = E; //新しい要素が中に挿入されます
2.アルゴリズムを削除します
/ * 初期条件:次線形フォームLは,. 1 <= l <= LISTLENGTH(L)が存在する* / / * 長さL i番目のデータ要素を削除し、その値Eを返し、L - 1:結果* / ステータスListDelete(SqListの *はL、int型 I、elemType * E) { int型Kを、 IF(L->長さ== 0 ) { 戻りERROR; } IF(Iは< 1 || I> L-> 長さ) { リターンERROR; } * L-E =>データ[I- 1 ]; IF(I <L-> 長さ) { ための(I = K、K <L->長さ; ++ K ) { L - >データ[K- 1 ] = L-> データ[K]。 } } L - > length-- 。 返却OK。 }
挿入アルゴリズムが終了した後、我々はすべて理解して理解しようと削除アルゴリズム、質問以下のコメントがあります。
次は、単一のリストを話すように、あなたに感謝!