Удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного - C (СИ)
Формулировка задачи:
Работа со списками: в списке целых чисел удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного.
Решение задачи: «Удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> typedef struct _TNode { int value; struct _TNode* next; } TNode; //----------------------------------------------------------------------------- TNode* Push(TNode** list, int value) { TNode* node = malloc(sizeof(int)); node->value = value; node->next = *list; *list = node; return *list; } //----------------------------------------------------------------------------- int Pop(TNode** list) { TNode* node = *list; int value = node->value; *list = node->next; free(node); return value; } //----------------------------------------------------------------------------- void Print(const TNode* list) { for (; list; list = list->next) { printf("%d ", list->value); } printf("\n"); } //----------------------------------------------------------------------------- TNode* RemoveDuplicate(TNode* list) { TNode* baseNode = list; TNode* tempNode = list->next; while (tempNode) { if (baseNode->value == tempNode->value) { Pop(&baseNode->next); } else { baseNode = tempNode; } tempNode = baseNode->next; } return list; } //----------------------------------------------------------------------------- int main() { TNode* list = NULL; int count = 15; srand(time(NULL)); while (count--) { Push(&list, rand() % 3); } Print(list); RemoveDuplicate(list); Print(list); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д