====== 線形リスト(単方向) ====== ソースコード #include #include using std::cout; using std::cin; using std::endl; using std::string; struct mylist { string str; struct mylist* nextlist; }; int main() { #include #include 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 #include 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; } }