#include namespace { const int DATASIZE = 5;//生成するデータ数 } struct Point { int x; int y; }; struct myList { Point pos; int num; //データ1個作ったら勝手に増えてほしい myList* pNext; }; //関数のプロトタイプ宣言 void InsertData(myList* head, int num, myList* data); void InsertData(myList* head, int num, int x, int y); void DeleteData(myList* head, int num); void DelateData(myList* head, int x, int y); myList* makeData(int x, int y); void PrintList(myList* head); //関数の定義たち void InsertData(myList *head, int num, myList* data) //numの後ろにデータdataを挿入 { myList* p = head; while (p != nullptr) { if (p->num == num) { myList* tmp = p->pNext; p->pNext = data; data->pNext = tmp; break; } else p = p->pNext; } return; } void InsertData(myList* head, int num, int x, int y) //numの後ろにデータdataを挿入 { myList* p = head; while (p != nullptr) { if (p->num == num) { myList* data = makeData(x, y); myList* tmp = p->pNext; p->pNext = data; data->pNext = tmp; break; } else p = p->pNext; } return; } //データが見つかれば削除 void DeleteData(myList* head, int num) { myList* p = head; myList* pre = nullptr; myList* delData = nullptr; while (p != nullptr) { if (p->num == num) { if (p == head) { delData = head; *head = *(p->pNext); } else { delData = p; pre->pNext = p->pNext; } break; } else pre = p; p = p->pNext; } delete delData; return; } //データが見つかれば削除 void DelateData(myList* head, int x, int y) { } myList* makeData(int x, int y) { static int numData = 0; myList* pData = new myList; pData->pos = { x, y }; pData->num = numData; pData->pNext = nullptr; numData++; return(pData); } void PrintList(myList* head) { myList* p = head; while (p != nullptr) { std::cout << p->num << ": (" << p->pos.x << ", " << p->pos.y << ")" << std::endl; p = p->pNext; } } int main() { myList* head = nullptr; myList* preP = nullptr; //myList* head = makeData(0, 0); for (int i = 0; i < DATASIZE; i++) { Point tmpP{ rand() % 10, rand() % 10 }; myList* p = makeData(tmpP.x, tmpP.y); if (p->num == 0) head = p; else preP->pNext = p; preP = p; } std::cout << "挿入前" << std::endl; PrintList(head); myList* newData = makeData(-1, -1); InsertData(head, 2, newData); std::cout << "挿入後" << std::endl; PrintList(head); std::cout << "削除後" << std::endl; DeleteData(head, 3); PrintList(head); int N = 6; while (true) { myList* newData = makeData(-1, -1); InsertData(head, 2, newData); DeleteData(head, N); N++; } return 0; }