Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2010, 15:33   #1
grave123
Пользователь
 
Регистрация: 06.12.2009
Сообщений: 15
Сообщение Удаление элементов из списка.

Добрый день. Есть задача, в которой необходимо удалить символ из последовательности у которого соседи одинаковые, причем первый и последний символы - соседи, например, lolk -> ll. Последовательность представить в виде двунаправленного циклического списка. Вот мой код:

Код:
#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;
	}
}
У меня возникает проблема при удалении элемента. Не во всех случаях символы удаляются, например, в последовательности joinjo действия зацикливаются. Помогите хочу разобраться.
grave123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление элемента из списка aurora_87 Общие вопросы C/C++ 1 18.06.2009 14:02
Удаление элементов из списка Wi1D Помощь студентам 0 18.05.2009 00:23
Перемещение элементов списка выше/ниже iankov PHP 8 09.03.2009 21:08
Удаление списка. Пролог. luzerka Помощь студентам 1 13.01.2009 20:31
нупский вопрос.. удаление из списка adwaer Помощь студентам 2 06.06.2008 23:28