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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2011, 19:43   #11
_Alerter_
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 89
По умолчанию

Код:
while (p != NULL)
                {
                    if(strcmp(p->code, code)==0)
                    {
                        system("CLS");
                        puts("\n\tЗАПИСЬ НАЙДЕНА...\n");
                        puts("\n\tКод товара\tНаименование\tКоличество\tЦена");
                        printf("\t%s",p->code);
                        printf("\t%15s",p->name);
                        printf("\t\t%d",p->quant);
                        printf("\t\t%d",p->price);
                        printf("\n\n");
                        if (head != p) // если найденный элемент не является головой списка
                        {
                            head->last = p;//присваиваем предыдущему элементу головы найденный элемент
                            p->last->next = p->next;//присваиваем полю next предыдущего перед найденным элементом поле next найденного элемента
                            p->next = head;// полю next найденного элемента присваиваем указатель на голову
                            p->last = NULL;//поле last ссылается в никуда
                            head = p;//указатель на голову присваивает найденный элемент
                        }
                        break;
                    }
                    p = p->next;
                  }

Последний раз редактировалось _Alerter_; 20.07.2011 в 19:56.
_Alerter_ вне форума Ответить с цитированием
Старый 20.07.2011, 20:46   #12
soirkar
Пользователь
 
Регистрация: 21.06.2011
Сообщений: 13
По умолчанию

_Alerter_, спасибо большое. Очень доходчиво.
soirkar вне форума Ответить с цитированием
Старый 20.07.2011, 21:09   #13
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от soirkar Посмотреть сообщение
Нужно найденный товар пихнуть вверх двусвязного списка, а остальные элементы должны съехать вниз. Как это осуществить? Не понимаю как работать с двусвязными списками. Если можно, то поясните код на пальцах.

Код:
puts("\tВведите код товара для поиска: ");
scanf("%s",&code);

while (p != NULL)
{
if(strcmp(p->code, code)==0)
{
system("CLS");
puts("\n\tЗАПИСЬ НАЙДЕНА...\n");
puts("\n\tКод товара\tНаименование\tКоличество\tЦена");
printf("\t%s",p->code);
printf("\t%15s",p->name);
printf("\t\t%d",p->quant);
printf("\t\t%d",p->price);
printf("\n\n");
Если вы пользуетесь стандартным контейнером С++ std::list, то там есть функция push_front, которая помещает элемент в начало списка, есть функция push_back, которая помещает элемент в конец списка, и есть функция insert, которая вставляет элемент в любую указанную позицию.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с списком soirkar Visual C++ 0 28.06.2011 16:29
работа с динамическим списком Medik07 Общие вопросы C/C++ 2 08.03.2011 20:54
Работа со списком Delphi novi4ok_Delphi Помощь студентам 3 11.03.2010 15:28