C ++リニアテーブル

主なポイントは以下のとおりです。

1.C ++クラスのフレンド関数テンプレートを書きます。

2.C ++テンプレートクラスは、COUTの文言を<<上書きされます。

3.手書きの直線形。

線状の一般的なパターン

さらに騒ぎがなければ、直接コードに
ヘッダーファイル:

#pragmaかつて

#defineのMaxSize 100

#含める

#含める

名前空間stdを使用。

テンプレート

クラスLinearList;

テンプレート

ostream&演算子<<(のostream&OS、LinearList&)。

テンプレート

空PrintList2(LinearList&);

テンプレート

クラスLinearList

{

公衆:

LinearList(); //引数なしのコンストラクタ。

LinearList(T []、INT N); //コンストラクタn個のデータの断片。

〜LinearList(); //デストラクタ。

民間:

Tデータ【のMaxSize]。

int型の長さ。

公衆:

int型GETLENGTH(); //線形データ格納テーブルの数を取得します。

T GetPosも(int型POS);データのposのリスト線形//戻ります。

ボイドInsertObjInPos(T OBJの、int型のPOS); // objが位置posに挿入

T DeletePos(int型POS); // posの位置のデータを削除します。

(T OBJの)を見つけINT; //データのOBJ位置を見つけます。-1が返されません。

空PrintList1();

友達のostream&演算子<< <>(のostream&OS、LinearList&);テーブルリニア//オーバーロードされた出力

友人のボイドPrintList2 <>(LinearList&); //フレンド関数の出力シーケンステーブル。

T SetPosToObj(int型のPOS、T OBJ)は、第二の位置POSのObjに//データ

T * ToFirstAdd(); //最初のリニアテーブルのアドレスを返します

空はsetLength(int型のlen); //セットの線形化テーブル長。

}。

テンプレート

ostream&演算子<<(のostream&OS、LinearList&)

{

以下のために(; I <a.Length; int型私は0を= I ++)

{

OS << a.Data [I] <<」「;

}

OS << '\ n' は、

リターン;

}

テンプレート

空PrintList2(LinearList&)

{

以下のために(; I <a.Length; int型私は0を= I ++)

{

std :: coutの<< a.Data [I] <<」「;

}

std :: coutの<< '\ n' は、

}「CPPファイル:

#include「stdafx.hを」

#include「LinearList.h」

テンプレート

LinearList :: LinearList()

{

長さ= 0;

}

テンプレート

LinearList :: LinearList(T []、INT N)

{

this->長さ= N。

(I ++; I <N I = 0の整数)のために

{

this->データ[I] = [I]。

}

}

テンプレート

LinearList ::〜LinearList()

{

長さ= 0;

}

テンプレート

int型LinearList :: GETLENGTH()

{

this->長さを返します。

}

テンプレート

T LinearList :: GetPosも(int型POS)

{

this->データ[POS]を返します。

}

テンプレート

空LinearList :: InsertObjInPos(T Objに、int型のPOS)

{

IF(POS>長さ+ 1つの|| POS <1)

{

「InsertObjInPosエラーを投げます!そして、ほとんどの位置は、「長すぎるか短すぎます。

リターン;

}

this->長++;

以下のために(INT iが長さ= - 1; I> = POS; I-)

{

this->データ[I] = this->データ[I - 1]。

}

this->データ[POS - 1] =のObj。

}

テンプレート

T LinearList :: DeletePos(int型POS)

{

もし(POS <1 || POS>この - >長)

{

投げる「DeletePosエラーとほとんど位置が間違っています」。

}

TのTEMP = this->データ[POS - 1]。

用(INT I = POS - 1; I <長-1; I ++)

{

this->データ[I] = this->データ[I + 1]。

}

長さ - 。

温度を返します。

}

テンプレート

int型LinearList ::検索します(T OBJの)

{

int型POS = -1;

以下のために(; I <長さ; int型私は0を= I ++)

{

もし(this->データ[i]を== OBJの)

{

// I + 1を返します。

POS = I + 1。

POSを返します。

}

}

POSを返します。

}

テンプレート

空LinearList :: PrintList1()

{

以下のために(;私は<this->長さ; int型私は0を= I ++)

{

std :: coutの<< this->データ[i]は<<」「;

}

std :: coutの<<てendl;

}

テンプレート

T LinearList :: SetPosToObj(int型のPOS、TのObj)

{

もし(POS <1 || POS>この - 長さ+ 1)

{

投げる「DeletePosエラーとほとんど位置が間違っています」。

}

(POS ==長さ+ 1)の場合

{

長++;

this->データ[POS - 1] =のObj。

}

this->データ[POS - 1] =のObj。

T()を返します。

}

テンプレート

T * LinearList :: ToFirstAdd()

{

>データをthis-を返します。

}

テンプレート

空LinearList ::はsetLength(int型LEN)

{

lenはthis->長さ=;

}「メイン機能:

//リニアテーブル_通常版の.cpp:エントリポイントのコンソールアプリケーションを定義します。

//

#include「stdafx.hを」

#include "LinearList.cpp"

#含める

名前空間stdを使用。

メインint型()

{

INT試験[10] = {2,4,6,8,10,12,14,16,18,20}。

LinearList(テスト10)。

std :: coutの<< "コンストラクタの後に注文テーブル:" <<てendl;

a.PrintList1(); //出力する第一の方法。

std :: COUT << "最初の位置99に挿入された" << ENDL。

a.InsertObjInPos(99、1)。

PrintList2(A); //第二出力方法。

std :: coutの<< "位置12に挿入された88" <<てendl;

a.InsertObjInPos(88、12);

coutの<<; //オーバーロードされた出力。

std :: coutの<< "データ3つのポジションを探す:" << a.Locate(3)<<てendl;

std :: coutの<<「データ出力4を検索し、削除します:」;

a.DeletePos(a.Locate(4))。

coutの<<; //再び過負荷に出力。実際には、他の大型出力文言があります。私は、書き込みに<>を使用します。次の章の私は他の文言で過負荷を実現します。

COUT <<「オフセットテーブルアレイ素子出力順序2つのアドレス:」;

std :: COUT << a.ToFirstAdd()[2] << ENDL。

getchar();

0を返します。

}

公開された261元の記事 ウォンの賞賛4 ビュー4261

おすすめ

転載: blog.csdn.net/it_xiangqiang/article/details/105206322