線形リスト(単方向)

ソースコード

#include <iostream>
#include <string>

using std::cout;
using std::cin;
using std::endl;
using std::string;

struct mylist {
	string str;
	struct mylist* nextlist;
};

int main()
{
#include <iostream>
#include <string>

using std::cout;
using std::cin;
using std::endl;
using std::string;

struct mylist {
	string str;
	struct mylist* nextlist;
};


簡単なリストのテスト(自動変数で、つないでみる)

int main()
{
	mylist head;
	//((head.nextlist).nextlist).nextlist
	head.str = "ここが、先頭です。";
	head.nextlist = nullptr;//次へのポインタは空っぽ
	mylist data1;
	data1.str = "2個目のデータ";
	data1.nextlist = nullptr;//次へのポインタは空っぽ
	head.nextlist = &data1;
	cout << (*(head.nextlist)).str;
}

簡単なリストのテスト(動的メモリ確保でつないでみる)

#include <iostream>
#include <string>

using std::cout;
using std::cin;
using std::endl;
using std::string;

struct mylist {
	string str;
	struct mylist* nextlist;
};

int main()
{
	mylist head;
	//((head.nextlist).nextlist).nextlist
	head.str = "ここが、先頭です。";
	head.nextlist = nullptr;//次へのポインタは空っぽ
	
	int num = 0;//データ数
	cin >> num;
	mylist* tmp = nullptr;
	mylist* crr = &head; //今tmpをつなぐための親ノード
	for (auto i = 0; i < num; i++)
	{
		tmp = new mylist;
		tmp->str = std::to_string(i+1) + "番目のでーた";
		crr->nextlist = tmp;
		tmp->nextlist = nullptr;
		crr = tmp;
	}

	crr = &head;
	while (crr != nullptr)
	{
		cout << crr->str << endl;
		crr = crr->nextlist;
	}

}