Адрес элементов в списке
Даны числа D1 и D2 и указатель P0 на один из элементов непустого двусвязного списка. Добавить в начало списка новый элемент со значением D1 , а в конец — новый элемент со значением D2 . Вывести адреса первого и последнего элементов полученного списка.
Вот я половину сделал и теперь не знаю как вывести адрес первого и последнего элементов полученного списка
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string>
#include <time.h>
#include <locale.h>
struct List
{
int x;
List* Next, * Prev;
};
List* Head = 0, * Last = 0; /*указатели на адреса начало и конец списка*/
void Add(int x)
{
List* r = new List; /*выделение памяти под новый элемент*/
r->x = x; /*записываем значение в структуру*/
r->Next = 0; /*указываем, что изначально по следующему адресу пусто*/
r->Prev = 0; /*указываем, что изначально по следующему адресу пусто*/
if (Head != 0) /*если список не пуст*/
{
r->Prev = Last; /*указываем адрес на пред.элемент в поле последний элемент*/
Last->Next = r; /*указываем адрес следующего за хвостом элемента*/
Last = r; /*меняем адрес хвоста*/
}
else /*если список пуст*/
{
Head = Last = r; /*голова = концу = элементу, который сейчас добавили*/
}
}
void Write()
{
List* temp = Head; /*временный указатель на первый элемент*/
while (temp != 0) /*пока не встретили пустое значние*/
{
printf("%d ", temp->x); /*выводим каждое считанное значение счетчиком*/
temp = temp->Next; /*смена адреса на следующий элемент*/
}
printf("\n");
}
void Add_start(int d1)
{
List* n = new List; /*временный указатель на первый элемент*/
n->x = d1; /*записываем значение в структуру*/
n->Next = Head; /*указываем адрес следующего = голове*/
n->Prev = 0; /*указываем, что изначально по следующему адресу пусто*/
Head->Prev = n; /*указываем адрес пред.элемента нашего нового элемента*/
Head = n; /*присваиваем значения элемента = голове*/
}
void Add_end(int d2)
{
List* z = new List;
z->x = d2;
z->Prev = Last;
z->Next = 0;
Last->Next = z;
Last = z;
}
int main()
{
setlocale(LC_ALL, "Russian");
srand(time(NULL));
for (int i = 0; i < 10; i++)
{
Add(rand() % 9);
}
printf("Исходный список:");
Write();
Add_start(2);
Add_end(2);
printf("Список после добавления элемета в начало и конец: ");
Write();
// system("pause");
return 0;
}