Удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного - 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;
}

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


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

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

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