Другие языки программирования и технологии
Добрые программисты, помогите, плиз, с очередью в С++. В подробном изложении. Спасибо.
Создайте очередь для целых (положительных и отрицательных) чисел. Очень прошу помочь мне с этим. Как ни искала, как не пыталась на примерах разобраться. Толку ни какого.
программа создаёт очередь (ввод тоесть формирование очереди осуществляется до тех пор пока не будет введён ноль) и затем удаляет указанный элемент из очереди
#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;
}
#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;
}
Aleksey Davydovich
это не очередь, а линейный список. у автора вопроса задача попроще
Hikmet A-Ov
Я готова вас расцеловать :-)))) Спасибо за помощь.
Петр Шевцов
Это не С++, а хуевый прехуевый C с использованием стандартной библиотеки C++.
очередь - это обыкновенный список, в который элементы добавляются только в конец, а удаляются только из начала. элемент - структура с двумя полями: полем данных (твоим числом) и указателем на следующий элемент. для работы с очередью используют два указателя - на голову и на хвост. сначала очередь пуста, указатели на голову и на хвост равны NULL. когда записываем первое число, то выделяем под него память, в поле данных пишем число, а в указатель - NULL, указатели на голову и хвост указывают на этот элемент. появляется новое число: выделяем под него память и записываем адрес в поле-указатель элемента, на который указывает указатель на хвост, переставляем указатель на хвост на этот элемент, в поле данных заносим число, в поле-указатель - NULL
Hikmet A-Ov
Это понятно. Но как составить программу на эту тему? Теории у меня есть по очередям.
Если ты хочешь готовый код с полным руководством и объяснение всего, что непонятно - пиши мне на мыло, s.e.m.a@inbox.ru - о цене договоримся.
Используй стандартную библиотеку шаблонов STL. Там есть очередь, в исходный код включается директивой #include <queue.h>. А чтобы объявить очередь целых чисел, нужно написать queue <int> q, здесь q непосредственно целочисленная очередь. Плюс куча готовых методов для работы с ней, перечислять не буду, в интернете масса информации по этому поводу. Удачи)))
Владислав Сорокин
=) Думаю, если бы ТС нужна была STL-ая очередь, ей бы так и сказали...Т.к. подозреваю, что очередь нужна не ей, а преподу какого-то вуза. А там обычно сначала делают очередь своими руками через списки, а уж затем используют STL
Петр Шевцов
1. Без ".h" по стандарту
2. std::queue
2. std::queue
Похожие вопросы
- Программисты помогите плиз!!
- программисты и просто умные люди помогите плиз
- Я начинающий программист, так что пока не очень смыслю в этом деле. Помогите плиз найти ошибки в коде. Язык php.
- программисты помогите пожалуйста!
- Программисты помогите!
- Уважаемые программисты! Помогите добрым советом, как выучить английский
- Хочу стать программистом, помогите, прочитайте обязательно описание))
- Уважаемые программисты, помогите (MS Visual Basic 6.0)
- Кто поможет, плиз, перевести изображение текста в ворд (у меня нет файнридера) ?
- Хакеры!И программисты!Сюда... плиз