заменить на заданный идентификатор значение предпоследнего элемента списка (c++)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <iostream>
#define MAXDL 9 /* макс.длина ид-ра (строки символов с признаком конца '\0' ) */
struct EL_SP /* тип элемента списка */
{
char id[MAXDL]; /* идентификатор */
struct EL_SP* sled; /* ссылка на следующий элемент */
};
/*------------------------------------------------------------------------------------ ---*/
/* функция включения очередного идентификатора в список */
/*------------------------------------------------------------------------------------ ----*/
void Vkl(struct EL_SP** p, char t_id[])
/* Вх. данные: *p - указатель списка идентификаторов
лексикографическом порядке,
t_id - включаемый в список (текущий) ид-р */
/* Вых. данные: *p */
{
struct EL_SP* pt, /* указатель включаемого эл-та */
    * k, * j; /* указатели очередного и предыдущего
            элементов списка */
            /* выделение памяти для нового эл-та списка */
j = nullptr;
pt = (struct EL_SP*)malloc(sizeof(struct EL_SP));
strcpy_s(pt->id, t_id);
if (*p == NULL || strcmp(pt->id, (*p)->id) < 0)
{ /* включение ид-ра в начало списка */
    pt->sled = *p; *p = pt;
}
else
{ /* поиск элемента списка, после которого нужно
  включить идентификатор */
    k = *p;
    while (k != NULL && strcmp(pt->id, k->id) >= 0)
    {
        j = k; k = k->sled;
    }
    /* включение эл-та *pt после элемента *j */
    j->sled = pt; pt->sled = k;
}
}
/*-----------------------------------------------------------------*/
/* функция печати списка */
/*-----------------------------------------------------------------*/
void PechSp(struct EL_SP* p)
/* Вх. данные: p - указатель начала списка */
{
struct EL_SP* i; /* указатель текущего элемента списка */

printf("\nРезультат\n");
for (i = p; i != NULL; i = i->sled)
    puts(i->id);
}
void udal(struct EL_SP*& p)
{
struct EL_SP* i;
for (int k = 0; k < 2; k++)
{
    i = p;
    if (i == NULL) {
        printf("List is empty");
        break;
    }
    else
    {
        p = i->sled;
        free(i);
    }
}
}

/*--------------------------------------------------------------*/
/* О С Н О В Н А Я П Р О Г Р А М М А */
/*-------------------------------------------------------------*/
int main()
{
setlocale(LC_ALL, "Russian");
struct EL_SP* p; /* указатель начала списка */
unsigned n; /* количество идентификаторов */
unsigned i; /* параметр цикла */
char t_id[MAXDL]; /* текущий идентификатор */
printf("\nВведите число идентификаторов\n n=");
scanf_s("%u", &n);
getchar(); /* пропуск символа "перевод строки" */
p = NULL; /* список пока пуст */
printf("Введите идентификаторы ");
printf("(после каждого нажмите <Enter> )\n");
for (i = 1; i <= n; i++)
{
    gets_s(t_id);
    Vkl(&p, t_id); /* включение ид-ра в список */
}
PechSp(p); /* печать списка */
udal(p);
PechSp(p);
printf("\n\nдля за\n");
_getch();
return 0;
}

Ответы (0 шт):