Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct queue{
- int inf;
- queue* next;
- };
- void push(queue*& h, queue*& t, int x){ // функция добавления элемента в хвост очереди
- queue* r = new queue;
- r->inf = x;
- r->next = NULL;
- if (h == NULL && t == NULL){
- h = r;
- t = r;
- }
- else{
- t->next = r;
- t = r;
- }
- }
- int pop(queue*& h, queue*& t){ // функция удаления элемнета из головы очереди
- queue* r = h;
- int i = h->inf;
- h = h->next;
- if (h == NULL){
- t = NULL;
- }
- delete r;
- return i;
- }
- int main()
- {
- queue* t1 = NULL; // очередь для числе, считанных с клавиатуры
- queue* h1 = NULL;
- int n;
- cin >> n;
- for (int i = 0; i < n ; i++){ // считываем очердь с клафвиатуры
- int x;
- cin >> x;
- push(h1, t1, x);
- }
- queue* t2 = NULL; // очередь, в которйо будет ответ на задание
- queue* h2 = NULL;
- queue* t3 = NULL; // промежуточная очередь
- queue* h3 = NULL;
- while (t1 != NULL || h1 != NULL){ // перекладываем в ответную очередь все отрицательные числа
- if (h1->inf < 0){
- push(h2, t2, pop(h1, t1));
- }else{
- push(h3, t3, pop(h1, t1)); // в промежуточную очередь запоминаем положительные числа
- }
- }
- while(t3 != NULL || h3 != NULL){ // из промежуточной очеерди переладываем положительные числа в ответную очередь
- push(h2, t2, pop(h3, t3));
- }
- while(t2 != NULL || h2 != NULL){ // выводим ответнуб очередь
- cout << pop(h2, t2) << " ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement