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

Реализация стека с помощью массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести цифры треугольником http://www.cyberforum.ru/cpp-beginners/thread412728.html
Помогите, пожалуйста:) Нужно вывести на экран: 1111111 222222 33333 4444 555 66 7 В C++ с использование цикла!:)
C++ перевести из 2 в 10. но так... пожешь помочь? вот программа перевода из 2 системы в 10. нужно сделать так чтобы он переводил и числа после запятой и чтоб выдавал сообщение "число не в 2-ой системе" если введу число не в 2-ой системе //--------------------------------------------------------------------------- #include<math.h> #include<conio.h> #include<stdlib.h> #include<stdio.h> #include<string.h> #include<vcl.h>... http://www.cyberforum.ru/cpp-beginners/thread412718.html
Аналог break для функции типа void C++
надо сделать так , на месте break функция ничего не сделала void push(Stack *tmp, int element) { Stack *curr, *prev; int count = 0; prev = tmp; while (prev->next != NULL)
Бинарные деревья C++
Вот задачка: Для заданного бинарного дерева поиска проверить условие: • для каждой вершины высота левого поддерева отличается от высоты правого поддерева не более чем на 2 (по абсолютной величине). Нифига не понимаю, если можно полный код с обьяснением :)
C++ Метод вращений (Якоби) http://www.cyberforum.ru/cpp-beginners/thread412703.html
Почему то данный алгоритм работает не правильно. На часть тестов дает левый ответ. Подскажите, пожалуйста, в чем ошибка? например, на матрице 3 0 2 -1 выдает d = 3 1 //правильно v =
C++ работа с функцией qsort вот есть код который отделает слова и записывает в массив и надо их отсортировать по возрастанию длины как использовать qsort в данном случае? #include <iostream> using namespace std; void main() { char div = "(){}<>;\"=+-*., "; подробнее

Показать сообщение отдельно
Питекантроп
246 / 140 / 6
Регистрация: 14.06.2010
Сообщений: 340
21.12.2011, 15:50
Вот, с примером использования.

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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include <iostream>
 
template <class T>
class Stack
{
private:
        T * arr;
        int size, len;
        void new_size(int s)
        {
                if (s<=0) return;
                T * new_arr = new T[s];
                int min_s = s<len?s:len;
                for (int i = 0; i<min_s; i++) new_arr[i] = arr[i];
                delete[] arr;
                size = s;
                arr = new_arr;
        }
 
public:
        Stack()
        {
                len = 0;
                arr = new T[size = 5];
        }
 
        Stack(Stack & st)
        {
                arr = new T[size = st.size];
                len = st.len;
                for (int i = 0; i < len; i++) arr[i] = st.arr[i];
        }
 
        ~Stack()
        {
                delete[] arr;
        }
 
        int Size()
        {
                return len;
        }
 
        void Push(T x)
        {
                if (len == size) new_size(size<<1);
                arr[len++] = x;
        }
        T Pop()
        {
                if (size > 10 && len < size>>2) new_size(size>>1);
                if (len == 0) return arr[len];
                return arr[--len];
        }
        T Top()
        {
                return arr[len];
        }
        void Clear()
        {
                delete arr;
                len = 0;
                arr = new T[size = 5];
        }
 
        bool IsEmpty()
        {
                return len == 0;
        }
 
        Stack<T> operator + (Stack<T> & st)
        {
                Stack<T> S;
                S.new_size(len + st.len + 10);
                for (int i = 0; i<len; i++) S.arr[S.len++] = arr[i];
                for (int i = 0; i<st.len; i++) S.arr[S.len++] = st.arr[i];
                return S;
        }
        Stack<T> operator + (T x)
        {
                Stack<T> S;
                S.new_size(len + 10);
                for (int i = 0; i<len; i++) S.arr[S.len++] = arr[i];
                S.arr[S.len++] = x;
                return S;
        }
 
        Stack<T> & operator += (Stack<T> & st)
        {
                if (len + st.len > size) new_size(len + st.len + 10);
                for (int i = 0; i<st.len; i++) arr[len++] = st.arr[i];
                return *this;
        }
 
        inline Stack<T> & operator += (T x)
        {
                Push(x);
                return *this;
        }
 
        Stack<T> & operator = (Stack<T> & st)
        {
                delete[] arr;
                arr = new T[size = st.size];
                len = st.len;
                for (int i = 0; i < len; i++) arr[i] = st.arr[i];
                return *this;
        }
        bool operator == (Stack<T> & st)
        {
                if (len != st.len) return false;
                for (int i = 0; i<len; i++) if (arr[i]!=st.arr[i]) return false;
                return true;
        }
 
        inline bool operator != (Stack<T> & st)
        {
                this->operator == (st);
        }
        inline Stack<T> & operator >> (T & x)    // = pop
        {
                x = Pop();
                return *this;
        }
        inline Stack<T> & operator << (T x)    // = push
        {
                Push(x);
                return *this;
        }
};
 
 
using namespace std;
int main(int argc, char* argv[])
{
    Stack<int> S;
    int x;
    S<<33;
    S>>x;
    cout<<x<<endl;
 
    S<<1<<2<<10;
    while (!S.IsEmpty()) cout<<S.Pop()<<" ";
    cout<<endl;
 
    S<<1<<2<<10;
    Stack<int> S1;
    S1.Push(78);
    S += S1 + S + 20;
    while (!S.IsEmpty()) cout<<S.Pop()<<" ";
    cout<<endl;
 
    Stack<char*> S_str;
    S_str<<"qwer"<<"asdf"<<"zxcv";
    while (!S_str.IsEmpty()) cout<<S_str.Pop()<<" ";
    cout<<endl;
 
    cin>>x;
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru