После каждого элемента списка, стоящего на четной позиции добавить элемент =-1 - C (СИ)
Формулировка задачи:
Не могу нормально написать программу.
Вообщем, после каждого элемента спика, стоящего на четной позиции добавить элемент =-1.
Решение задачи: «После каждого элемента списка, стоящего на четной позиции добавить элемент =-1»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
typedef struct node_t {
int value;
struct node_t* next;
} TList;
//-----------------------------------------------------------------------------
TList* Push(TList** list, int value) {
TList* node = malloc(sizeof(TList));
node->value = value;
node->next = *list;
*list = node;
return *list;
}
//-----------------------------------------------------------------------------
void Print(const TList* list) {
for (; list; list = list->next) {
printf("%d ", list->value);
}
printf("\n");
}
//-----------------------------------------------------------------------------
TList* Func(TList* list) {
TList* node = list;
while (node && node->next) {
node = node->next;
node = Push(&node->next, -1)->next;
}
return list;
}
//-----------------------------------------------------------------------------
int main() {
TList* list = NULL;
int i = 10;
while (i--) {
Push(&list, i + 1);
}
Print(list);
Print(Func(list));
return 0;
}
Объяснение кода листинга программы
В данном коде используется язык программирования C и реализуется задача по изменению списка таким образом, чтобы после каждого элемента, стоящего на четной позиции, добавлялся элемент со значением -1.
- Создается структура данных
TList, которая представляет собой связный список. Она содержит два поля:value(значение) иnext(указатель на следующий элемент списка). - Определены две функции:
Push(добавить элемент в список) иPrint(распечатать список). - Функция
Pushдобавляет новый элемент в начало списка. Принимает указатель на голову списка и значение нового элемента. Создается новый узел, в котором хранится значение и указатель на следующий элемент. Затем этот новый узел становится головой списка. - Функция
Printвыводит все элементы списка на экран. Проходит по всем элементам списка, начиная с головы, и выводит значение каждого элемента. - Определена функция
Func(измененный список). В ней используется цикл, который проходит по всем элементам списка, начиная с головы. Если текущий элемент является последним (т.е. у него нет следующего элемента), то в него добавляется новый элемент со значением -1. - В функции
mainсоздается пустой список и заполняется некоторыми значениями. Затем список выводится на экран с помощью функцииPrint. - После этого вызывается функция
Func, которая изменяет список, добавляя после каждого элемента на четной позиции элемент со значением -1. Измененный список также выводится на экран с помощью функцииPrint. - В конце программы возвращается значение 0, что означает успешное выполнение программы.