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

Стеки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Почему в выводе выдаются предупреждения "warning C4101: sm: неиспользованная локальная переменная" http://www.cyberforum.ru/cpp-beginners/thread687619.html
// gd.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "stdlib.h" #include "math.h" #include "stdio.h" #include "conio.h" #include "locale.h" void main()
C++ Надо определить матрицу как МОПРЕД Народ пожалуйста помогите!!!! 3 4 5 6 4 6 7 -3 3 -4 5 2 http://www.cyberforum.ru/attachment.php?attachmentid=197201&stc=1&d=1351940705 http://www.cyberforum.ru/cpp-beginners/thread687617.html
Найти вектор, в котором записаны максимумы всех строк матрицы C++
По заданной квадратной матрице найти вектор, в котором записаны максимумы всех строк матрицы.
Boost C++ Обертка над boost::asio
Вот класс обертки: class NetworkManager{ std::string CIP,IP; unsigned short CPort,Port; static boost::asio::io_service io; boost::asio::ip::tcp::socket *sock; char TRY; bool connected;
C++ Реализация итерационных циклов С++ http://www.cyberforum.ru/cpp-beginners/thread687588.html
Помогите, пожалуйста, с написанием программы
C++ Странный порядок вывода сообщений на экран Вот код: #include <iostream> using namespace std; #define SIZE 10 // Объявление класса stack для символов: class stack { char stck; // содержит стек int tos; // индекс вершины стека подробнее

Показать сообщение отдельно
dederkay
 Аватар для dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
03.11.2012, 16:40     Стеки
вот простая очередь, не шаблонная, делал давно посмотрите если что спрашивайте тут форум добрых людей)
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#pragma once
#include <iostream>
using namespace std;
 
class NodeQueue
{
private:
    int lenght;
    struct Node
    {
        char data[256];
        Node* next;
    };
    
    Node* head;
    Node* tail;
public:
    explicit  NodeQueue()
    {
        head = NULL;
        tail = NULL;
        lenght = 0;
    }
    /*NodeQueue(const char &s)
    {
    }*/
    ~NodeQueue()
    {
        while(head)
        {
            tail = head->next;
            delete head;
            head = tail;
        }
    }
    void enqueue(void)
    {
        Node* temp = new Node;
        fflush(stdin);
        printf("Insert queue element: ");                /*temp->data = value;*/
        fgets(temp->data, 256, stdin);
        temp->data[strlen(temp->data) - 1] = '\0';
        
        if(empty())
        {
            head = temp;
            tail = temp;
            lenght++;
            cout<<"Element: \""<<temp->data<<"\" has been added to queue."<<endl;
            return;
        }
        tail->next = temp;
        tail = temp;
        tail->next = NULL;
        cout<<"Element: \""<<temp->data<<"\" has been added to queue."<<endl;
        lenght++;
    }
    void dequeue(void)
    {
        if(empty())
        {
            cout<<"Queue is empty"<<endl;
            return;
        }
        Node* delPtr = head;
        cout<<"Element \""<<head->data<<"\" is deleted from queue"<<endl;
        head = head->next;
        delete delPtr;
        lenght--;
    }
    bool empty()const
    {
        return head == NULL;
    }
    inline int getLenght(void)
    {
        return lenght;
    }
    void clean(void)
    {
        if(empty())
        {
            cout<<" Queue is empty."<<endl;
            return;
        }
        Node* delPtr = head;
        if(head != tail)
        {
            while(head)
            {
                head = head->next;
                delete delPtr;
                delPtr = head;
            }
        }
        head = NULL;
        tail = NULL;
        cout<<" All elements of queue is deleted."<<endl;
        lenght = 0;
    }
    void print(void)const
    {
        if(empty())
        {
            cout<<"Queue is empty"<<endl;
            return;
        }
        
        cout<<"________________________________________________________________________"<<endl;
        if(head == tail)
        {
            cout<<head->data<<endl;
        }
        if(head != tail)
        {
            for(Node* ptr = head; ptr != NULL; ptr = ptr->next)
            {
                    cout<<" "<<ptr->data<<" |";
            }
        }
        cout<<endl;
        cout<<"________________________________________________________________________"<<endl;
        cout<<endl;
    }
    char* operator [](int i)
    {
        if(empty())
        {
            cout<<" Queue is empty"<<endl;
        }
        Node* p = head;
        for(int n = 1; p != tail; p = p->next)
        {
            if(i == n)
            {
                return p->data;
            }
            n++;
        }
    }
    friend int clacCount(void)
    {
        int len = 0;
        return len;
    }
};
Добавлено через 20 минут
вот еще стек, не круговой, но думаю превратить в такой не составит труда?
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#pragma once
#include <iostream>
using namespace std;
template<class NODETYPE>
class Stack
{
protected:
    int count;//кількість
    struct Node//структура вузол
    {
        NODETYPE data;//дані шаблонного типу
        Node* prev;//покажчик на попередній елемент
        NODETYPE& getData(void)//функція що повертає сслику на дані
        {
            return data;// повертаємо дані
        }
    };
    Node* bottom;//покажчик на вершину стеку
public:
    Stack(void):count(0), bottom(0)//облнуляємо змінні в констукторі
    {
    }
    ~Stack(void)//дестуктор
    {
        clear();//викликаємо функцію очищення
    }
    
    void push(NODETYPE someData)//функція яка добаляє елемент на вершину стеку, приймає на вхід дані
    {
        Node* Temp = new Node;//створюємо новий елемент
        Temp->data = someData;//заповнюємо його дані вхідними даними
        Temp->prev = bottom;//вказуємо що вершина знаходиться перед ним
        bottom = Temp;//тепер вершина і є він
        count++;//інкрементуємо лічильник
    }
    void pop(void)//функція видалення елементу з вершини
    {
        if(!bottom)//у разі коли вершини не існує
        {
            cout<<"Err. Stack is empty."<<endl;//виводимо на екран помилку
            return;//виходимо з функції, не повертаючи значення
        }
        Node* pTemp = bottom->prev;//створюємо новий елемент який зберігає в собі елемент на рівень нижчий вершини
        delete bottom;//видаляємо вершину
        bottom = pTemp;//нова вершина рівна тому елементу
        count--;//декрементуємо лічильник
    }
    void clear(void)//функція очищення
    {
        while(bottom)//циклічно виконуємо доки існую вершина
        {
            Node* delPtr = bottom->prev;//створюємо новий елемент який зберігає в собі елемент на рівень нижчий вершини
            delete bottom;//видаляємо вершину
            bottom = delPtr;//нова вершина рівна тому елементу
        }
        count = 0;//обнуляємо лічильник
        bottom = NULL;//обнуляємо вершину
    }
    NODETYPE getBottomData(void)const//функція що повертає дані з вершини
    {
        return bottom->data;//повертаємо дані вершини
    }
    int rCount(void)const//функція що повертає кількість елементів
    {
        return count;//повертаємо лічильник(поточна кількість)
    }
    friend ostream& operator<<(ostream &o, const Stack &obj)//оператор запису в поток
    {
        if(!obj.bottom)//у разі коли обєкту не існує
        {
            o<<"Err. Stack is empty."<<endl;//записуємо в поток меседж про помилку
            return o;//повертаємо ссилку на поток для того щоб можна було робити так cout<<stack<<"lolwto?";
        }
        o<<"\n";//записуємо в поток перехід на новий рядок
        Node* p = obj.bottom;//створюємо новий покажик який зберігає в собі вершину переданого в оператор обєкту
        for(; p; p = p->prev)//циклічно перебраємо всі елементи покажчика
        {
            o<<" * "<<p->data<<" * "<<endl;//записуючи в поток виведення дані з зірочками по сторонам і переходами на новий рядок
        }
        o<<endl;//перехід на новий рядок
        return o;
    }
    friend istream& operator>>(istream &i, Stack &obj)//оператор зчитування з потоку
    {
        Node* b = obj.bottom;//створюємо новий покажик який зберігає в собі вершину переданого в оператор обєкту
        for(; obj.bottom; obj.bottom = obj.bottom->prev)//циклічно перебраємо всі елементи об'єкту
        {
            cout<<"Insert stack data: ";//виводимо на екран "введіть дані"
            i>>obj.bottom->getData();//зчитуємо  потоку дані записуючи їх в дані елементу стеку
        }
        obj.bottom = b;//відновлюємо покажчик на голову
        return i;//повертаємо ссилку на поток
    }
};
все делалось давно так что кто найдет ошибки буду рад, стек шаблонный, и да надеюсь укр комменты не будут дискриминироваться)
 
Текущее время: 13:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru