DSオーダー表 - 連続運転

タイトル説明

注文テーブルクラスを確立することを含む属性:配列、実際の長さ、(1000セット)の最大長さ

このクラスには、次のメンバ関数があります。

コンストラクタ:シーケンステーブルを初期化実施。

データmultiinsert(INT I、整数nは、複数の挿入 INT項目[]) 機能、 i番目の位置に実装し、アレイからの連続したN個のデータ項目を挿入する、すなわち、複数のデータIは位置から挿入されています。

私の位置を削除開始の複数のデータmultidel複数の(INT I、INT N)機能、実現i番目の位置から、n個の連続削除データ、すなわち、データを削除します。

主な機能テストライトシーケンステーブルクラス。

 

エントリー

行1、すなわち実際の長さ、最初のn個有するN個の入力データを表し; Nデータ入力が続きます

iは、インサートの開始位置を示し、次いでkはk個の入力データを表すがあるが挿入され、次に入力されたデータをK 2第一の入力線

ライン3は、第1の入力I削除開始の位置を示し、その後削除されるkはk個の入力データを表します

輸出

注文テーブルは、シーケンステーブルの実際の長さとデータを含む、データの間の空間によって分離されました

作成された出力の最初の行の内容のテーブルのうえご注文

第二の出力線を連続的に順番挿入目次の後に行われます

出力ライン3は、継続的に内容を削除順序のテーブルの後に行われます

 

サンプル入力

6 11 22 33 44 55 66 2 99 3 88 77 4 5

サンプル出力

6 11 22 33 44 55 66 9 11 99 88 77 22 33 44 55 66 4 11 99 88 66

プロンプト

 

#include <iostreamの>
 使用して 名前空間STD;
 の#define OK 0
 の#defineエラー-1 クラスSeqList 
{ プライベートINT *リスト; // 素子アレイのint MAXSIZE; // 順序テーブル最大長のintサイズ; // の順序テーブル実際の長公衆
    SeqList()
    { 
        MAXSIZE = 1000年; 
        サイズ = 0 ; 
        一覧 = 新しい新しいINT [MAXSIZE]; 
    } 
    SeqList(INT
 


    
    
 nは、INT * P)
    { 
        MAXSIZE = 1000年
        リスト = 新しい int型[MAXSIZE]; 
        サイズ = N。
        以下のためにINT iが= 0 ; N I <; I ++ 
            リストには、[I] = P [i]は、
    }
    SeqList()
    { 
        削除[]リスト。
    } 
    INT list_size()
    { 
        戻りサイズ; 
    } 
    INT list_insert(INT I、int型の項目)
    { 
        場合(I < 1 || i>のサイズ+ 1 
        { 
            COUT << " エラー" << ENDL。
            リターンエラー。
        } 
        INT T = I- 1 INT J =サイズ- 1 ; J> = T; j-- 
        { 
            リスト[J + 1 ] = リスト[J]。
        } 
        リスト[T] = 項目。
        サイズ ++ ;
        返却OK。
    }
     int型list_del(INT I)
    { 
        場合(I < 1 || i>のサイズ)
        { 
            COUT << " エラー" << ENDL。
            リターンエラー。
        } 
        INT T = I- 1 INT J = T; J <、サイズ1、J ++ 
        { 
            リスト[J] =リスト[J + 1 ]。
        } 
        サイズ - 返却OK。
    } 
    INT list_get( INT I)
    { 
        場合(I < 1 || i>のサイズ)
        { 
            COUT << " エラー" << ENDL。
            リターンエラー。
        } 
        INT T = I- 1 リターンリスト[T]; 
    } 
    ボイドlist_display()
    { 
        COUT <<サイズ<< "  " 以下のためにINT iが= 0 ; I <サイズ; I ++ 
            COUT <<リスト[I] <<  N)
        coutの << てendl; 
    } 
    INT multiinsert(INT I、整数 nは、INTの項目[])
    { 
        場合(I < 1 || i>のサイズ+ 1 リターンエラー。
        int型のカウント= 0 ;カウント<N;カウント++ 
        { 
            list_insert(I、項目[N - 1 - カウント])。
        } 
        を返すOK。
    } 
    INT multidel(INT I、INT 
    { 
        もし(I < 1 || i>のサイズ|| I + N- 1 > サイズ)
             リターンエラー。
        int型のカウント= 0 ;カウント<N;カウント++ 
        { 
            list_del(I)。
        } 
        を返すOK。
    } 
}。
 
 
int型のmain()
{ 
    int型、nは 
    cinを >> N;
    int型 * P = 新しい INT [N];
    INT iは= 0 ; I <N I ++ 
    { 
        CIN>>  P [I]を、
    } 
    SeqList L(N、P)。
    L.list_display(); 
    int型のインデックス。
    CIN >>インデックス>> N;
    INT * Q = 新しい INT [N]。
    以下のためにINT iが= 0 ; I <N I ++ 
    { 
        CIN >> Q [I]を、
    } 
    であれば(L.multiinsert(インデックス、N、Q)=!エラー)
        L.list_display(); 
    CIN >>インデックス>> N;
    もし(!L.multidel(インデックス、N)= エラー)
        L.list_display(); 
    削除[] pは、
    削除[] Q。
    リターン 0 ; 
}

おすすめ

転載: www.cnblogs.com/SZU-DS-wys/p/12177790.html