Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 15
1

Релизация очереди (первый пришел первый ушел) в классе

03.09.2014, 21:52. Просмотров 600. Ответов 3
Метки нет (Все метки)


Вот пытаюсь исправить ошибку в методе Рор(). Помоготе розобратся в чем проблема

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
// Stack1.h
#pragma once
#include <iostream>
using std::cout;
using std::endl;
class Stack1
{
private:
    struct och
    {
        int key;
        och* next;
        och* back;
    };
    och* back;
    och* A;
    och* pop;
    int index;
    int numb;
public:
    Stack1(int number);
    ~Stack1(void);
    bool Push(int n);
    bool Is_empty();
    bool Is_full();
    int Pop();
};
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//Stack1.cpp
#include "Stack1.h"
 
 
Stack1::Stack1(int number)
    {
        numb=number;
        back = 0;
        index = 0;
    }
Stack1::~Stack1(void)
    {
    
    }
    bool Stack1::Push(int n)
    {
    if(index<=numb)
    {
        A = new och;
        A ->key=n;
        A->back=back;
        index++;
        back=A;
        A=A->next=new och;
        return true;
    }
    else
    {
        return false;
    }
    }
    bool Stack1::Is_empty()
    {
        if(index <= 0)
        {
            return true; 
        }
        return false;
    }
    bool Stack1::Is_full()
    {
        return false;
    }
    int Stack1::Pop()
    {
    A->next=0;
    pop = new och;
    pop->key=A->key;
    pop->next=A->next;
    pop->back=A->back;
    for(int k = 0; k<numb; k++)
    {
        if((pop->back)==0)
            break;
        pop=pop->back;
    }
    int i;
    i=pop->key;
    pop=pop->next;
    pop->back=0;
    A = pop;
    return i;
    }
Добавлено через 3 минуты
Пока класс без организации указателя next и очистки памяти
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2014, 21:52
Ответы с готовыми решениями:

первый пришел, первый ушел
Нужно реализовать очередь, первый пришел, первый ушел. Написал код, но чето перемудрил и не могу...

Написать класс "стек" (первый пришел, последний ушел)
Здравствуйте! Помогите пожалуйста, очень мало времени осталось, а сдать нужно. Вот задание ...

В пользовательском классе "Двусвязный список" продублировать первый положительный элемент и удалить первый отрицательный
Здравствуйте,помогите пожалуйста в тете &quot;Двусвязный список&quot; Создать двусвязный список с...

Поменять в очереди первый элемент со вторым, третий с четвертым и так далее до конца очереди
Дана очередь из целых чисел. Поменять в очереди первый элемент со вторым, третий с четвертым и так...

3
61 / 61 / 12
Регистрация: 11.12.2009
Сообщений: 248
03.09.2014, 21:53 2
А почему класс называется Стек?

Я бы посоветовал вам запоминать ссылку на первый елемент. Тогда бы присвоили его временной переменной и вернули.

C++
1
2
3
och t = first;
first = first->next;
return t;
0
Модератор
Эксперт С++
10456 / 8710 / 5261
Регистрация: 18.12.2011
Сообщений: 23,262
03.09.2014, 21:54 3
Цитата Сообщение от Max_Advanced Посмотреть сообщение
C++
1
2
3
A->next=0;
....
pop->next=A->next;
И чему равно pop->next?

И в целом, если это очередь, то pop() должна возвращать значение первого (а не последнего) элемента:
C++
1
2
3
4
5
6
7
8
int Stack1::Pop()
    {
          int i=this->key;
          Stack1 *p=this;
          this=p->next;
          delete p;
          return i;
    }
0
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 15
03.09.2014, 22:11  [ТС] 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
...
for(int k = 0; k<numb; k++)
    {
        if((pop->back)==0)
            break;
        pop=pop->back;
    }
    int i;
    i=pop->key;
    pop=pop->next;
    pop->back=0;
    A = pop;
    return i;
Вот цыкл который и будет переходить по указателю back пока он не найдет 0
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2014, 22:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Автоматизация записи пришел\ушел
Здравствуйте. Извиняюсь, если ошибся разделом. У нас охранники ведут книжку для себя: Пришел...

Добавить элемент со значением D в конец очереди и извлечь из очереди первый (начальный) элемент
Дано число D и указатели P1 и P2 на начало и конец очереди, содержащей не менее двух элементов. ...

Удалить первый отрицательный элемент из очереди
Описать процедуру, которая удаляет из очереди первый отрицательный элемент, если такой есть.

Удалить первый и последний элемент очереди
Нужна программа которая будет удалять первый и последний элемент очереди.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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