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

Очередь FIFO - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сформировать массив из 20 целых чисел на языке С++ http://www.cyberforum.ru/cpp-beginners/thread581671.html
Сформировать массив из 20 целых чисел. Для каждого значения элемента массива посчитать и вывести на экран число его вхождений в массив.
C++ Найти точку, расстояние от которой до начала координат минимальное На плоскости задано N точек с координатами (xi,yi) . Найти точку, расстояние от которой до начала координат минимальное. Для задания координат точки использовать структурный тип. http://www.cyberforum.ru/cpp-beginners/thread581669.html
Картотека C++
Здравствуйте, помогите пожалуйста. Скажите почему поиск не работает? Задание: Картотека в бюро обмена квартир организована как линейный список. Сведения о каждой квартире содержат: *количество комнат *этаж *площадь *адрес Составить программу, которая обеспечивает *начальное формирование картотеки *ввод заявки на обмен
C++ ошибка в указателе
после выполнения функции pbeg->next ссылается на последний элемент, а не на следующий, помогите! void addf() { FILE *f1; pt=new magazin; pr=new magazin; magazin m; f1 = fopen("6.dat","r+b"); fread(&m.nomer,sizeof(m.nomer),1,f1); fread(&m.nazvanie,sizeof(m.nazvanie),1,f1);
C++ Функция разбиения матрицы на две http://www.cyberforum.ru/cpp-beginners/thread581658.html
Доброго времени суток уважаемые форумчане. Столкнулся с проблемой. Необходимо написать функцию разбиения матрицы на две матрицы, в качестве входных параметров должна быть матрица, а в качестве выходных две матрицы. Сделал программу, но преподаватель забраковал. В общем надо сделать с помощью функции. Вот что у меня получилось: #include "stdafx.h" #include <iostream> #include <vector> using...
C++ Как лучше всего учить язык C++? Хочу начать изучать язык программирования! Остановился на C++, а с чего начать не знаю! подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.05.2012, 20:56     Очередь FIFO
вот топорный вариант:
имея указатель на начало списка вы всегда можете в цикле добраться до его последнего элемента (до тех пор пока item->next не станет равным нулю). вот у вас есть последний итем.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
item* getPredLastItem() // получение предпоследнего
{
  // тут алгоритм прохода от начала до предпоследнего итема. реализовать не сложно.
  return predLast;
}
 
item* getLastItem()
{
   // список может быть пустым и getPredLastItem() может вернуть 0. нужно проверять.
  return getPredLastItem()->next;
}
 
void push(int value)
{
  Item* newItem = new Item();
  newItem->value = value;
  newItem->next = 0;
   // список может быть пустым и getLastItem() может вернуть 0. нужно проверять.
  Item* lastItem = getLastItem();
  lastItem->next = newItem;
}
 
void pop()
{
   // список может быть пустым и getLastItem() может вернуть 0. нужно проверять.
  Item* predLastItem = getPredLastItem();
  delete predLastItem->next; // дестроим последний итем
  predLastItem->next = 0; // теперь предпоследний помечен как последний.
}
 
Текущее время: 04:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru