線形リスト(単方向)
ソースコード
#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;
}
}