Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
#1

Извлечение из очереди - C++

25.11.2012, 16:18. Просмотров 564. Ответов 10
Метки нет (Все метки)

Доброго дня.

Имеем очередь , извлекаем первый элемент.
Собственно вопрос , если мы удалим первый элемент , то как сообщить стоящему за ним , что первый удален и теперь он первый ? Ведь связи первый -> второй нет .

Вводить двунаправленный список ? , Но это дек.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2012, 16:18     Извлечение из очереди
Посмотрите здесь:

извлечение флешки - C++
господа,а как можно програмно сделать безопасное извлечение флешки?

Извлечение корня - C++
Не подскажите функцию в С++ для извлечения корня

Извлечение DLL - C++
Можете мне объяснить ,как зделать так,штобы после запуска exe'шник извлекал из себя dll?

Извлечение имени файла - C++
Как извлечь имя файла для последующей записи в массив\файл?

Извлечение данных из программы - C++
в игре Counter Strike 1.6 на deathrun сервере в чате бывают задания где надо произвести арифметические операции с 5 числами и в том же...

Извлечение из памяти по указателю - C++
Не могу понять, как с помощью указателя извлечь строку из памяти имея адрес типа Integer. Указателю ведь нельзя присвоить значение нужного...

Извлечение значения и 3-и ключа - C++
Каким образом можно сделать или даже использовать уже готовую структуру данных, с помощью которой в нее можно поместить 4 аргумента или 2....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
25.11.2012, 16:20     Извлечение из очереди #2
а какая связь есть? храни указатель на начало и указатель на конец.
даже для односвязного списка это достаточно, чтоб удалять/добавлять в начало/конец.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct element *front, *back;
void push_front(struct element *item){
  item->next=front;
  front=item;
}
void push_back(struct element *item){
  if (back) back->next=item;
  back=item;
  back->next=NULL;
}
struct element* pop_front(){
struct element* item;
item=front;
if (front) front=front->next;
return item;
}
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
25.11.2012, 16:23  [ТС]     Извлечение из очереди #3
Вводить два стека ? или есть альтернатива ?
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
25.11.2012, 16:28     Извлечение из очереди #4
C++
1
2
3
4
5
6
struct element* pop_back(){
  struct element* item=front;
  while (item->next->next) item=item->next; 
  back=item;
  return item->next;
}
Добавлено через 42 секунды
Цитата Сообщение от scofielcl Посмотреть сообщение
Вводить два стека ?
при чём тут стеки?
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
25.11.2012, 16:30  [ТС]     Извлечение из очереди #5
3-->2-->1

Удаляем элемент номер 1 , при этом получаем , что 2->next , ссылается на пустую область памяти.
MrGluck
Модератор
Эксперт CЭксперт С++
7183 / 4349 / 634
Регистрация: 29.11.2010
Сообщений: 11,839
25.11.2012, 16:31     Извлечение из очереди #6
При удалении необходимо сместить связи
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
25.11.2012, 16:32  [ТС]     Извлечение из очереди #7
Реализация на двух стеках , Очередь может быть построена из двух стеков S1 и S2 как показано ниже:

Википедия (очередь).

Добавлено через 1 минуту
Сместить связи , попрошу разъяснить.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
25.11.2012, 16:35     Извлечение из очереди #8
Цитата Сообщение от scofielcl Посмотреть сообщение
Удаляем элемент номер 1 , при этом получаем , что 2->next , ссылается на пустую область памяти.
См. сообщение №4. Да, мы в цикле идём до конца списка.Можно добавить ещё...
C++
1
2
3
4
5
6
7
8
9
10
struct element* pop_back(){
  struct element* item=front;
  if (!item){return NULL;}
  if (!(item->next)) {front=back=NULL; return item;}
  while (item->next->next) item=item->next; 
  back=item;
  item=item->next;
  back->next=NULL;
  return item;
}
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
25.11.2012, 16:37  [ТС]     Извлечение из очереди #9
[QUOTE=Kuzia domovenok;3752278]
C++
1
2
3
4
5
6
struct element* pop_back(){
  struct element* item=front;
  while (item->next->next) item=item->next; // Вот тут
  back=item;
  return item->next;
}
Полагаю в цикле while вы используете связь однонаправленного списка , т.е перемещаетесь от последнего элемента к первому , я по условию , таким методом воспользоваться не могу.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
25.11.2012, 16:41     Извлечение из очереди #10
тогда только двусвязный. даже если пытаться хранить указатели на последний, на предпоследний, на предпредпоследний элементы, рано или поздно тебе для удаления понадобится указатель на любой произвольный элемент с конца, а это значит только двусвязные списки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2012, 16:49     Извлечение из очереди
Еще ссылки по теме:

Очередь (извлечение значений) - C++
Добрый день, нужна помощь в написании кода. Заранее благодарен за помощь. Задание: Дана непустая очередь. Извлекать из очереди...

Извлечение кубического корня - C++
Подскажите, как можно извлечь кубический корень? Извлечение квадратного корня это без проблем: #include <iostream> #include <cmath> ...

Извлечение корня n-степени - C++
Написал программу для вычисления корня n-cтепени #include<iostream> #include<math.h> using namespace std; int main() ...

Извлечение .exe из ресурса - C++
Помогите извлеч екзешку на компютер пожалуста.

Извлечение чисел из строк - C++
Имеется файл, содержащий определённое количество строк Строки в формате : 1,a,a,a,a,4.0002,a,a 2,a,a,a,a,5.02e-006,a,a ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
25.11.2012, 16:49  [ТС]     Извлечение из очереди #11
Думаю да.

Хотя , если придумать что то фантастическое вида : поиска элемента ссылающегося на удаляемый(тобиш второй) , присваивание статуса "первого" и последующее удаление первого , но очевидно это глупости , т.к. такая сложность не целесообразна.
Yandex
Объявления
25.11.2012, 16:49     Извлечение из очереди
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru