C++単方向リスト構造

C++言語で単方向リストを作ってみました。



C++言語で単方向リストを作ってみました。
久々に作ったので結構四苦八苦しました。
やっぱり、やらないと衰えますね~www

今回はソースコードが3つあるので少し長いです。
Ruby版はまた作ったら載っけます。

C++
――――[ここから]――――

――――[Main.cpp]――――
#include "One_WayLinkedList.h"

// メイン処理
int main()
{
	// 変数定義
	One_WayLinkedList list = One_WayLinkedList( "", -1 );
 
	// リストを追加する
	list.add( new One_WayLinkedList( "list1", 10 ) );
	list.add( new One_WayLinkedList( "list2", 20 ) );
	list.add( new One_WayLinkedList( "list3", 30 ) );
 
	// リストの内容を表示する
	list.show();
 
	// リストを削除する
	list.clear();
 
	return 0;
}
 
――――[One_WayLinkedList.h]――――
#include <string>

class One_WayLinkedList
{
private:
	// 名前
	std::string name_;
 
	// 年齢
	int age_;
 
	// 次のリストへのポインタ
	One_WayLinkedList* next_;
 
public:
	// コンストラクタ
	One_WayLinkedList( const std::string& name, int age );
 
	// デストラクタ
	~One_WayLinkedList();
 
	// リストを追加する(最後には追加しない)
	void add( One_WayLinkedList* pointer );
 
	// リストをクリアする
	void clear();
 
	// リストの内容を表示する
	void show();
};
 
――――[One_WayLinkedList.cpp]――――
#include "One_WayLinkedList.h"

#include <iostream>

// コンストラクタ
One_WayLinkedList::One_WayLinkedList( const std::string& name, int age )
	:name_( name )
	,age_( age )
{
	next_ = NULL;
}
 
// デストラクタ
One_WayLinkedList::~One_WayLinkedList()
{
}
 
// リストを追加する(最後には追加しない)
void One_WayLinkedList::add( One_WayLinkedList* pointer )
{
	// ポインタがNULLか判定する
	if( pointer == NULL ) { return; }
 
	// リストのつなぎ直し
	pointer->next_ = next_;
	next_ = pointer;
}
 
// リストをクリアする
void One_WayLinkedList::clear()
{
	One_WayLinkedList* current_list = next_;
	One_WayLinkedList* temp;
 
	// 現在のリストがNULLか判定する
	while( current_list != NULL )
	{
		// リストを削除する
		temp = current_list->next_;
		delete current_list;
 
		// 次のリストを代入
		current_list = temp;
	}
}
 
// リストの内容を表示する
void One_WayLinkedList::show()
{
	One_WayLinkedList* current_list = next_;
 
	// 現在のリストがNULLか判定する
	while( current_list != NULL )
	{
		// 内容を表示する
		std::cout << current_list->name_ << "(" << current_list->age_ << ")" << std::endl;
 
		// 次のリストを代入
		current_list = current_list->next_;
	}
}
 
――――[ここまで]――――

この記事がみなさんの少しでも役に立てば僥倖です!!

タグ:

+ タグ編集
  • タグ:
最終更新:2009年10月28日 22:21
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。