Другие языки программирования и технологии

Добрые программисты, помогите, плиз, с очередью в С++. В подробном изложении. Спасибо.

Создайте очередь для целых (положительных и отрицательных) чисел. Очень прошу помочь мне с этим. Как ни искала, как не пыталась на примерах разобраться. Толку ни какого.
HA
Hikmet A-Ov
2 555
программа создаёт очередь (ввод тоесть формирование очереди осуществляется до тех пор пока не будет введён ноль) и затем удаляет указанный элемент из очереди

#include <iostream>
using namespace std;

struct Node
{
int item;
Node *next;
};

void AddLast ( Node *Top, int item );

int main()
{
Node *Top = NULL;
cout << "Input head of list: " << endl;
Top = new Node;
cin >> Top->item;
Top->next = NULL;
Node *it = Top;
int counter = 0;
int val = 0;
cout << "Input other elements of list: " << endl;
while ( val)
{
cin >> val;
AddLast (Top,val);
counter++;
}
cin.clear();
//begin

int number = 0;

do
{
cout << "Input number of element: " << endl;
cin >> number;
}
while ( (number < 0) || ( number > counter ) );

it = Top;

for ( int i = 0; i < number-2; i++ )
it = it->next;

Node *t = it->next;
it->next = t->next;
delete t;

//end

cout << "Your List: " << endl;

it = Top;
while ( it->next )
{
cout << it->item << endl;
it = it->next;
}
cout << "counter = " << counter << endl;
system("pause");
return 0;
}
void AddLast ( Node *Top, int item )
{
Node *it = Top;
while (it->next)
it = it->next;

it->next = new Node;
it = it->next;
it->item = item;
it->next = NULL;
}
ЕГ
Евгений Гончаров
741
Лучший ответ
Aleksey Davydovich это не очередь, а линейный список. у автора вопроса задача попроще
Hikmet A-Ov Я готова вас расцеловать :-)))) Спасибо за помощь.
Петр Шевцов Это не С++, а хуевый прехуевый C с использованием стандартной библиотеки C++.
очередь - это обыкновенный список, в который элементы добавляются только в конец, а удаляются только из начала. элемент - структура с двумя полями: полем данных (твоим числом) и указателем на следующий элемент. для работы с очередью используют два указателя - на голову и на хвост. сначала очередь пуста, указатели на голову и на хвост равны NULL. когда записываем первое число, то выделяем под него память, в поле данных пишем число, а в указатель - NULL, указатели на голову и хвост указывают на этот элемент. появляется новое число: выделяем под него память и записываем адрес в поле-указатель элемента, на который указывает указатель на хвост, переставляем указатель на хвост на этот элемент, в поле данных заносим число, в поле-указатель - NULL
Aleksey Davydovich
Aleksey Davydovich
19 025
Hikmet A-Ov Это понятно. Но как составить программу на эту тему? Теории у меня есть по очередям.
Если ты хочешь готовый код с полным руководством и объяснение всего, что непонятно - пиши мне на мыло, s.e.m.a@inbox.ru - о цене договоримся.
Используй стандартную библиотеку шаблонов STL. Там есть очередь, в исходный код включается директивой #include <queue.h>. А чтобы объявить очередь целых чисел, нужно написать queue <int> q, здесь q непосредственно целочисленная очередь. Плюс куча готовых методов для работы с ней, перечислять не буду, в интернете масса информации по этому поводу. Удачи)))
Владислав Сорокин =) Думаю, если бы ТС нужна была STL-ая очередь, ей бы так и сказали...Т.к. подозреваю, что очередь нужна не ей, а преподу какого-то вуза. А там обычно сначала делают очередь своими руками через списки, а уж затем используют STL
Петр Шевцов 1. Без ".h" по стандарту
2. std::queue