Двунаправленный список. Удаление элементов с одинаковыми соседями - C (СИ)

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

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

Собственно вот такое задание нужно выполнить. Нашел код, который вроде бы работает, но не во всех случаях. Прошу знатоков глянуть что к чему и исправить ошибки.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
struct characters {
    char data;
    characters* next;
    characters* prev;
};
 
characters* readList();
characters* deleteChars(characters* head);
void writeList(characters* ch);
 
int main()
{
    characters* qList;
 
    qList = readList();
    writeList(deleteChars(qList));
 
    _getch();
    return 0;
}
 
characters* readList()
{
    characters *ch, *head;
    char c;
 
    head = new characters;
 
    printf("\nInput sequence: ");
    scanf("%c", &c);
    head->data = c;
 
    ch = head;
 
    while (c != '.')
    {   
        ch->next = new characters;
        ch->next->prev = ch;
        ch->next->data = c;
        ch = ch->next;
        scanf("%c", &c);
    }
 
    ch->next = head;
    head->next->prev = ch;
 
    return head;
}
 
characters* deleteChars(characters* head)
{
     characters* ch = head->next;
     characters* tmp;
 
     do
     {
         if (ch->next->data == ch->prev->data) {
             tmp = ch->prev;
             ch->prev->next = tmp;
             ch->next->prev = ch->prev;
             delete ch;
             ch = tmp;
         }
         ch = ch->next;
     }
     while (ch != head);
 
     return head;
}
 
void writeList(characters* head)
{
    characters* ch;
    ch = head->next;
 
    while (ch != head)
    {
        printf("%c", ch->data);
        ch = ch->next;
    }
}

Решение задачи: «Двунаправленный список. Удаление элементов с одинаковыми соседями»

textual
Листинг программы
struct characters* next;

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


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

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

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