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