Удалить связный список и освободить память - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вот так создаю связный список
typedef struct {
comp el;
void* next;
} list;
 
list* first = NULL;
 
/*typedef struct { // Структура описана в другом месте
    UINT8 x, y, type; 
    WCHAR str[50]; 
    BOOL focus; 
    BOOL chek; 
} comp;*/
 
UINT8 k=2;
 
void Add(void)// Добавляет в список новый элемент
{
    list* newlist = (list*) malloc( sizeof(list));//Выделяет память 
    newlist->el.x = k;
    newlist->next = first;
    first = newlist;
    k++;
}
 
void GetX(void)// Это для теста
{
    list* current = first;
    WCHAR            buf[32];
    UINT8   t=10;
    while (current) 
{  
    DrawText(u_ltou(current->el.x, buf), 100, 100+t);// u_ltou - число в строку
    t=t+10;
    current = current->next;
}
}
 
void Dest(void) // Удаление всего списка
{
//?????    
}
Как мне этот список удалить и освободить память (через mfree).

Решение задачи: «Удалить связный список и освободить память»

textual
Листинг программы
tstk *DelStackAll(tstk *sp)  
{    tstk *spt; int inf; 
  while(sp != NULL)    { 
    spt = sp; 
     inf= sp->inf; 
    cout << inf << endl; 
     sp = sp->a; 
   delete spt;            } 
 return NULL;   }

Объяснение кода листинга программы

  1. В функции DelStackAll передается указатель на вершину связного списка sp.
  2. В цикле while происходит обход всех элементов связного списка, начиная с вершины.
  3. Каждый элемент связного списка представлен структурой tstk, которая содержит указатель на следующий элемент связного списка a и информацию об элементе inf.
  4. В каждой итерации цикла переменная spt указывает на текущий элемент связного списка, а переменная inf содержит информацию об этом элементе.
  5. Значение inf выводится на экран.
  6. Указатель sp обновляется, чтобы указывать на следующий элемент связного списка.
  7. Вызывается функция delete для освобождения памяти, выделенной под текущий элемент связного списка.
  8. В конце функции возвращается NULL, чтобы указать, что связный список пуст.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы