データ構造 - 配列、単鎖及び二重鎖導入及び二重リンク線形リストは、同じ型がnである場合(N≧0)のデータ要素の有限のシーケンス、線状構造です。

リニアテーブルは線状構造であり、それは、同じタイプのN(N≧0)のデータ要素の有限のシーケンスであるています。

アレイ:

上限と下限のアレイは上限と下限の配列要素が連続して存在します。

アレイ機能は次のとおりです。データは連続しており、高速なランダムアクセス速度。
アレイは、多次元配列と動的配列わずかに複雑です。C言語のために、多次元配列の性質は、一次元アレイによって達成されます。ダイナミックアレイは動的に成長グループのボリュームインデックスの配列であるとして、C言語のために、アレイは動的な提供するために、手動で実装する必要があり、そしてC ++用語ため、STLは、ベクターを提供します。

単独リンクリスト:

方法リンクされたリスト(単一リンクリスト)ノードから成るリストであり、各ノードは次のノードへのポインタを含みます。

ヘッダが空である、後続ノードテーブルヘッダは、「ノード10」(10個のノードのデータ)、「ノード10」後継ノードは「ノード20」(10個のノードのデータ)であり、「ノード20」子孫ノードでありますこれは......、「ノード30」(データ・ノード20)、「ノード30」後継ノードは「ノード40」(データ・ノード10)であります

「ノード30」を削除する
削除する前に、「ノード20」後継ノード「ノード30」と「30ノード」後継ノード「ノード40」
「ノード20」後継ノード「ノード40」:削除した後

「ノード10」と「ノード20」の間の「ノード15」を追加
添加する前に:「ノード10」の後継ノード「ノード20」
添加後:「ノード10」後継ノード「ノード15」、および「ノード15」後継ノード「ノード20」

アレイに対して、ランダムアクセスの単一リストが遅くなるが、単独でリンクされたリストの削除/追加データは、非常に効率的であり、リンクは、ノードの一方向の方向である:単鎖によって特徴付けられます。

二重リンクリスト:

二重リンクリスト(二重リンクリスト)リンクリストです。そして二重連結リストのような単一のリストを直接先行および後続を指示するために、2つのデータノード内のポインタ、ポイントをそれぞれ有するノードは、です。ですから、二重にリンクされたリスト内の任意のノードから開始し、あなたはその前身のノードおよび後続ノードに簡単にアクセスすることができます。一般的に、我々は、双方向循環リストを構築しました。

ヘッダは、後続ノードヘッダが「ノード10」(10個のノードのデータ)であり、空である、先行の「ノード10」後継ノードは「ノード20」(10個のノードのデータ)であり、「ノード20」ノードは「ノード10」であり、「ノード20」後継ノードは「ノード30」であり、フロント「ノード30」中継ノード「ノード20」である; ...;後継ノードは、エンド・ノード・ヘッダです。

「ノード30」を削除する
削除する前に:先行ノードの「ノード20が」後続ノード「ノード30」、「30ノード」「ノード20」前者の「ノード30」後継ノード「ノード40」、「40ノード」中継ノード「ノード30」
「ノード20」後継ノード「ノード40」、「40ノード」先行ノードの「ノード20」:削除した後

「「ノード10」と「20ノード」」ノード15との間に加え
、「先行ノードの」ノード10「後継ノード「ノード20」、「20ノードをノード10」:追加する前に」
「ノード10は、」後継ノード「ノード15」、「15ノード」先行ノードの「ノード10」:追加した後 「ノード15」後継ノード「ノード20」、「20ノード」先行ノードの「ノード15」

C ++ STLのリスト二重にリンクされたリストのコンテナ

→リスト鎖、最初のノード→2→...ノードN→サイクル構成された第一のノードのノードのヘッドノードの正面に。
逆ストランドのリスト、N-1→→によるn番目のノードは、ヘッドノードのループ→...→n番目のノードを構成するノード。nがヘッドノードを指し示すリストのノードの数、先頭ポインタによって示される記憶場所の全体のリスト、です。

/ * 
1リスト初期化:
リスト<整数> T; //ない要素(1)
(2)リスト<整数> T (10); // 有するリストを作成し10の要素
(3)リスト<整数> T (10、3); //リストを作成し10個の要素を有し、各要素が3である
2リンクリスト挿入動作:
(1)フォワードメソッド実行:リストの先頭に新しい要素を挿入し、リストが自動的に形成するために展開:
t.push_front(8)、
(2)補間の終わり:リンクされたリストの末尾に新たな要素を挿入し、リストが自動的に形式に展開:
t.push_back(9); 
(3)介在:インサート()関数と、パラメータがです反復子の挿入位置は、例えば:
ITはt.beginを()=; 
これは++; //のみリストイテレータ注++または-操作を行うことができないN- + 
t.Insert(これは、20です); / /操作
:3.リストトラバース
(1)逆方向移動:フォーム:
リスト<整数> :: reverse_iteratorのRIT; 
用(RITのt.rbegin =(); t.rend RIT =(); RIT ++!)
(2)前方トラバーサル:形状:
一覧は<整数>:ITをイテレータ; 
(ITはt.beginを()=;)(ITを= t.end、ITを++!)のために
4.取り外し要素を
t.remove(8):(1)削除()メソッドは、例えば、同じ値の要素が削除され、素子のパラメータ値ではなく、反復子位置要素を削除
(2)削除するpop_front()メソッドを使用してリストの最初の要素は、例えば:; t.pop_front()
(3)を用いpop_back()メソッドは、例えば、要素のリストの末尾を削除:t.pop_back(); 
(4)消去を使用して()メソッドは、例えば、イテレータの位置の要素を削除:
ITはt.beginを()=; 
ITは++; //のみリストイテレータ注++または-操作が+ N-を行うことができない
IT ++; //操作が、(それはt.beginを=ため(); !それはt.endを()=;それ ++) 、これは影響を与えません
t.erase(IT); 
(5)クリア()、例えば空のリスト、:。t.clear(); 
。(6)サイズ()、要素の一つ見つけます例えば数:<< t.size COUT()<< ENDL; 
(7)()を見つけ、見つかった場合、要素の位置は、イテレータを返され、ヘッダファイルの#include <アルゴリズム>リスト内の要素を見つけ、見つからない場合は、最後には、()の位置のイテレータを返します。:の形をして下さい
。<整数> :: ITをイテレータ一覧を
ITを検索=(t.begin()、t.end(),. 8); //これと他の違い、セクションのリストを見つけなければなりません
( ; t.sort():8)ソート()メソッドは、リストをソートするために、デフォルトでは、注文フォームを上昇され
* / 
(9)UNIQUE()メソッドを連続的に反復要素を除去するために、注意が連続的に繰り返される要素。
実施例12 341 1は、削除することはできません。; 
	0を返します。

書式#include <iostreamの> 
の#include <アルゴリズム> 
書式#include <リスト> 
std名前空間を使用しました。
INTメイン()
{ 
	リスト<整数> L。
	l.push_back(2)。
	l.push_back(5)。
	l.push_back(4)。
	l.push_back(4)。
	l.push_back(6)。
	l.push_back(4)。
	リスト<整数> ::イテレータit。
	裁判所未満<< "剔除前:" <<てendl; 
	以下のためには、(それがl.beginを()=;!それ= l.endを();それ++)
		はcout << *それ<< "「; 
	coutの<<てendl; 
	l.unique(); //剔除连续重复元素、只保留一个
	はcout << "剔除后:" <<てendl; 
	以下のためには、(それがl.beginを()=;!それ= l.endを();それ++)
		はcout << *それ<< "「; 
	coutの<< endl; 
	システム(「一時停止」)。
}

  

おすすめ

転載: www.cnblogs.com/277223178dudu/p/11424067.html
おすすめ