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

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

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

помогите, пожалуйста. нужен код: создать односвязный список, тип информационного поля char*, добавить в список элементы с номерами 1,3,5 и т.д.

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct node_t
{
   char* str;
   struct node_t* next;
}  TNode;
 
typedef struct list_t
{
   TNode* head;
   TNode* tail;
}  TList;
 
//-----------------------------------------------------------------------------
TList* Push(TList* list, const char str[])
{
   TNode* node = (TNode*) malloc(sizeof(TNode));
   size_t length = strlen(str);
   node->str = (char*) malloc(length + 1);
   strcpy(node->str, str);
   node->next = NULL;
 
   if (list->head && list->tail)
   {
      list->tail->next = node;
      list->tail = node;
   }
   else
   {
      list->head = list->tail = node;
   }
 
   return list;
}
//-----------------------------------------------------------------------------
TList* Pop(TList* list)
{
   TNode* node = list->head;
   list->head = node->next;
 
   if (list->head == NULL)
   {
      list->tail = NULL;
   }
 
   free(node->str);
   free(node);
 
   return list;
}
//-----------------------------------------------------------------------------
void Clear(TList* list)
{
   while (list->head)
   {
      Pop(list);
   }
}
//-----------------------------------------------------------------------------
void Print(const TList* list)
{
   const TNode* node = list->head;
 
   for (; node; node = node->next)
   {
      printf("%s, ", node->str);
   }
   printf("\b\b \n");
}
//-----------------------------------------------------------------------------
 
int main()
{
   const char* CWords[] = {"one", "two", "three", "four", "five", "six",
                           "seven", "eight", "nine", "ten", NULL};
 
   TList list = {NULL, NULL};
   const char** pwords = CWords;
 
   for (; *pwords; ++pwords)
   {
      Push(&list, *pwords);
   }
 
   Print(&list);
 
   Clear(&list);
 
   return EXIT_SUCCESS;
}

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

В данном коде реализован односвязный список, который заполняется элементами из массива строк CWords. Каждый элемент списка представлен структурой TNode, которая содержит указатель на следующую вершину списка и строку. Функция Push добавляет новый элемент в список, функция Pop удаляет последний элемент из списка, функция Clear полностью очищает список, функция Print выводит элементы списка на экран. Список содержит следующие переменные:

  1. TList* list - указатель на структуру, представляющую список.
  2. TNode* head - указатель на первый элемент списка.
  3. TNode* tail - указатель на последний элемент списка. В функции main создаётся экземпляр списка и заполняется элементами из массива CWords. Затем список выводится на экран, очищается и завершается работа программы.

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


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

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

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