リスト構造をつくってみたよ

Listing. 1: リスト構造を作ってみたよ
"theMain.cpp"
#include <iostream>
 
using namespace std;
 
 
struct Point 
{
	int x;
	int y;
};
 
struct PointList
{
	Point p;
	int num;
	PointList* pNext;
};
//自己参照構造体
 
 
void PrintDat(const PointList& _pl)
{
	cout << "(" << _pl.p.x << "," << _pl.p.y << ") : num = " << _pl.num << endl;
	if (_pl.pNext == nullptr)
		cout << "pNext:nullptr" << endl;
}
 
void PrintDat(PointList* _pl)
{
	cout << "(" << _pl->p.x << "," << _pl->p.y << ") : num = " << _pl->num << endl;
	if (_pl->pNext == nullptr)
		cout << "pNext:nullptr" << endl;
}
 
int main()
{
	//PointList dat{ {10, 15}, 1, nullptr };
	//PrintDat(dat);
 
	//PointList* pDat = nullptr;
	//pDat = new PointList{ {1, 2}, 2, nullptr };//ここで実体ができるよ
	//PrintDat(pDat);
	//dat.pNext = pDat;
	//cout << "pDatつないだ後" << endl;
	//PrintDat(dat);
	//PrintDat(dat.pNext);
 
	//pDat = new PointList{ {3, 4}, 3, nullptr };//ここで実体ができるよ
	//dat.pNext->pNext = pDat;
	//cout << "pDatもう一回つないだ後" << endl;
	//PrintDat(dat);
	//PrintDat(dat.pNext);
	//PrintDat(dat.pNext->pNext);
 
	int n = 0; //データが10個になるまでりすとを連続で作ってつなぐ
	PointList* pDat = nullptr;
	PointList* Head = nullptr;
	PointList* pPrev = nullptr;
	while (n<5)
	{
		if (pDat != nullptr)
			pPrev = pDat;
		pDat = new PointList{ {-1, -1}, -1, nullptr };
		Point tmpP;
		cout << n + 1 << "個目のデータ:x,yを入力" << endl;
		cin >> tmpP.x >> tmpP.y;
		pDat->p = tmpP;
		pDat->num = n + 1;
 
		if (n == 0)
			Head = pDat;
		else
			pPrev->pNext = pDat;
 
		//○○が入力されるまでリストをずっとつなげる
		n++;
	}
 
	PointList* p = Head;
	while (p != nullptr)
	{
		PrintDat(p);
		p = p->pNext;
	}
 
	p = Head;
	PointList* pMae = nullptr;
	while (p != nullptr)
	{
		//PrintDat(p);
		if (p->num == 3)//消す
		{
			pMae->pNext = p->pNext;
			pMae = p;
			p = pMae->pNext;
		}
		else {
			pMae = p;
			p = p->pNext;
		}
	}
 
	p = Head;
	while (p != nullptr)
	{
		PrintDat(p);
		p = p->pNext;
	}
 
	//PrintDat(Head);
	//PrintDat(Head->pNext);
	//PrintDat(Head->pNext->pNext);
	//PrintDat(Head->pNext->pNext->pNext);
	//PrintDat(Head->pNext->pNext->pNext->pNext);
	//PrintDat(Head->pNext->pNext->pNext->pNext->pNext);
	//PrintDat(Head->pNext->pNext->pNext->pNext->pNext->pNext);
	//PrintDat(Head->pNext->pNext->pNext->pNext->pNext->pNext->pNext);
	//PrintDat(Head->pNext->pNext->pNext->pNext->pNext->pNext->pNext->pNext);
	//PrintDat(Head->pNext->pNext->pNext->pNext->pNext->pNext->pNext->pNext->pNext);
	return 0;
}