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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2012, 23:00   #11
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Нет это не стек
Цитата:
begin указывает на последний элемент
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 05.11.2012, 23:14   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чет я запутался... ИМХО без полного проекта не разобраться.
Проходи отладчиком, и наблюдай что принимают переменные, и где их значения становятся в неадекват.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2012, 23:14   #13
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Не могу сообразить!!!!!! Что за напасть...

Вот, что я сегодня навоял.

Код:
void DeleteItem(void)
{
	int i;
	int num;
	DoubleList	*temp;
	DoubleList	*Current;
	
	Current = begin;

	PrintList(begin);
	printf("\n Введите номер товара для удаления: ");
	scanf("%d", &num);

	for(i = 1; i < num && Current != NULL; i++)
		Current = Current->pnext;
		if(Current != NULL)
		{
			if(Current == begin && Current == end)
			{
				begin = end = NULL;
				free(Current);
				Current = NULL;
			}
                        if(Current == begin)
			{
				begin = Current->pnext;
				begin->pprev = NULL;
				free(Current);
				Current = begin;
			}
			else if(Current == end)
			{
				
				end = Current->pprev;
				end->pnext = NULL;
				free(Current);
				Current = end;
			}
			else
			{
				Current->pnext->pprev = Current->pprev;
				Current->pprev->pnext = Current->pnext;
				temp = Current;
				Current = Current->pnext;
				free(temp);
			}
			
	}
		else
			printf("\n ТАКОГО ЗНАЧЕНИЯ В СПИСКЕ НЕТ!!! \n");
}
Вроде решил проблему. Первый IF. Перед всеми проверка, если введенное значение является единственным.
Код:
if(Current == begin && Current == end)
			{
				begin = end = NULL;
				free(Current);
				Current = NULL;
			}
Может и не очень изящно.... Может подскажете другой вариант.

Напиши пожалуйста свои соображения по поводу кода...
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Stilet; 06.11.2012 в 11:32.
Bugrimov вне форума Ответить с цитированием
Старый 06.11.2012, 00:08   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может подскажете другой вариант.
Я уже тут выкладывал приемы работы со списками, можешь посмотреть http://www.programmersforum.ru/showthread.php?t=70310
Мож чего и подчерпнешь оттуда интересного.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.11.2012, 05:57   #15
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Спасибо!!!
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элемента списка igoldyrev Помощь студентам 2 06.03.2011 14:24
удаление из списка(си) zhenya.ya Помощь студентам 0 31.05.2010 19:36
Удаление последнего элемента из списка и реверс этого списка. Goose Общие вопросы C/C++ 8 16.05.2010 16:12
удаление элемента из списка yagluboko Помощь студентам 1 10.04.2010 14:54
Удаление элементов из списка Wi1D Помощь студентам 0 18.05.2009 00:23