Двунаправленный список. Удаление элементов с одинаковыми соседями - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д