ストレージ構造の基本的な操作を実現するために:初期化、作成、挿入、削除、検索、トラバース、逆位置、合併作業
書式#include <iostreamの>
の#include <cstdlib>
名前空間stdを使用。
テンプレート<型名T>
クラスSeqList
{
プライベート:
T *データ;
int型maxSizeの;
最後のint;
無効リサイズ(int型でNewSize)
{
T * newAry。
(NewSizeパラメータ<= 0)であれば
{
CERR << "无效的数组大小" << ENDL。
返します。
}
(NewSizeパラメータ= maxSizeの!)なら
、{
newAry =新しいT [NewSizeパラメータ]。
IF(newAry == NULL)
{
CERR << "存储分配错误" << ENDL。
出口(1)。
T *のsrcptr =データ。
T * desptr = newAry。
一方、(N--)
{
* desptr ++ = * srcptr ++。
}
[]データを削除します。
データ= newAry。
maxSizeの= NewSizeの。
}
}
公共:
SeqList(INT SZ = 0)
{
maxSizeの= SZ。
最後= SZ-1;
データ=新しいT [maxSizeの]。
}
SeqList(SeqList <T>&L)
{
maxSizeの= L.maxSize。
=最後L.last。
データ=新しいT [maxSizeの]。
IF(データ== NULL)
{
CERR << "存储分配失败" << ENDL。
出口(1)。
}
ため(; iは最後の<; I = 0 int型私は++)
{
データを[I] = L.data [I]。
}
}
〜SeqList()
{
[]データを削除します。
}
INTサイズ()constは
{
maxSizeのを返します。
}
INT長さ()constは
{
1 +最後を返します。
}
int型の検索(CONST T&X)のconst
{
ため(INT i = 0; iは=最後の<; iは++)
{
IF(データ[I] == X)
{
リターンをI + 1。
}
}
0を返します。
}
INT(iは整数)CONSTを見つけ
{
(I> = 1 && iは1 +最後= <)場合は
{
; Iを返します
}
それ以外
の戻り0;
}
BOOLのGetData(INT I、TおよびX)のconst
{
((I)を見つけた場合)
{
X =データを[I-1];
trueを返します。
}
他
{
falseを返します。
}
}
ボイドSetDataメソッド(I、TおよびX INT)
{
IF(探し(I))
{
データ[I-1] = xと;
}
}
BOOLのisEmpty()constは
{
最後==返す- 1。
}
BOOL IsFull()constは
{
最後の戻り== maxSizeの-1。
}
BOOLインサート(CONST T&xは、IをINT)
{
(I <1 ||をI>最後+ 2)の場合
、{
falseを返します。
}
(INT J =最後; J> = I-1; j--)用
{
DATA [J + 1] =データ[J]。
}
maxSizeの++。
データ[I-1] = xと;
最後++;
trueを返します。
}
(I、TおよびX INT)取り外しBOOL
{
(最後== - 1)場合
、{
falseを返します。
}
もし((i)を見つけます!)
{
falseを返します。
}
のx =データ[I-1];
用(int型J = I-1、J <最後あり、j ++)
{
データ[J] =データ[J + 1]。
}
last--。
trueを返します。
}
ボイドソート()
{
(最後== - 1)であれば
{
返します。
}
のために(iは++; iは=最後<I = 0 INT)
{
(; J <=最後; J ++のint J = 0)ため
、{
IF(データ[i]が<データ[J])
{
Tの一時。
TEMP =データ[I];
データ[I] =データ[J]。
データ[J] = TEMP。
}
}
}
}
ボイド入力()
{
(最後== - 1)であれば
{
返します。
}
ため(; iは=最後の<; I = 0 int型私は++)
{
CIN >>データ[I];
}
}
ボイド出力()
{
iがint型。
(最後== - 1)であれば
{
返します。
}
ため(i = 0; iは++; iが=最後<)
{
COUT <<データ[I] <<」「。
}
COUT << ENDL。
}
ボイドMakeEmpty()
{
最後= -1。
}
ボイドリバース()
{
ため(INT i = 0; iは++; iが長さ()/ 2 <)
{
Tの温度を、
TEMP =データ[I];
データ[I] =データ[長さ() - I-1];
データ[長さ() - I-1] = TEMP。
}
}
}。
INTのmain()
{
int型M、N。
cinを>>メートル。
SeqList <整数>(M)。
a.Input();
INT X、Y。
CIN >> X >> Y。
a.Insert(X、Y)
a.Output();
int型のインデックス、NUM;
cinを>>インデックス。
a.Remove(インデックス、NUM)。
a.Output();
int型Z、F。
cinを>> Z;
F = a.Search(Z)。
(F == 0)であれば
{
COUTが<< "見つかりません" << ENDL。
}
他
{COUT << a.Search(Z)<< ENDL;}
a.Reverse()。
a.Output();
int型ミリメートル;
cinを>>ミリメートル。
SeqList <整数>
SeqList <整数> C(MM + M)。
b.Input();
以下のために(INT i = 0; iは++; iはa.Length()<)
{
int型の温度を、
a.GetData(I + 1、TEMP)。
c.SetData(I + 1、TEMP)。
}
ため(INT I = a.Length(); iは<(a.Length()+てb.length()); iは++)
{
int型の温度を、
b.GetData(ia.Length()+ 1、TEMP)。
c.SetData(I + 1、TEMP)。
}
c.Sort()。
c.Output();
0を返します。
}