// SAODLR2.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <list>
using namespace std;

struct El
{
	int dann;
	El *next;
};


class List
{
public:
	El *head;
	El *rear;
	El *ptr;


	List()
	{
		head = NULL;
		rear = NULL;
		ptr = NULL;
	}

	void make(int x)
	{
		ptr = new El();
		if (!head) head = ptr;
		else rear->next = ptr;
		ptr->dann = x;
		rear = ptr;
		rear->next = NULL;
	}

	void Print()
	{
		ptr = head;
		while (ptr)
		{
			cout << ptr->dann << " ";
			ptr = ptr->next;
		}
		cout << endl;
	}

	void insert(int x, int a)
	{
		ptr = head;
		El *temp;
		while (ptr)
		{
			while (ptr->dann != x)
			{
				ptr = ptr->next;
				if (ptr == NULL) return;
			}
			temp = new El;
			temp->dann = a;
			temp->next = ptr->next;
			ptr->next = temp;
			ptr = ptr->next->next;
		}
	}

};


int main()
{
	setlocale(0, "");
	int n,x,E,E1;
	List lst;

	cout << "Введите количесво элементов в списке: ";
	cin >> n;
	cout << "Введите элементы данного списка:\n";
	for (int i = 0; i < n; i++)
	{
		cin >> x;
		lst.make(x);
	}
	lst.Print();

	cout << "Введите элемент E ";
	cin >> E;
	cout << "Введите элемент E1 ";
	cin >> E1;

	cout << "Преобразованный список\n";	
	lst.insert(E, E1);
	lst.Print();

	system("pause");
	return 0;
}



