Создать односвязный список и добавить в него элементы - 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 выводит элементы списка на экран. Список содержит следующие переменные:
- TList* list - указатель на структуру, представляющую список.
- TNode* head - указатель на первый элемент списка.
- TNode* tail - указатель на последний элемент списка. В функции main создаётся экземпляр списка и заполняется элементами из массива CWords. Затем список выводится на экран, очищается и завершается работа программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д