Форум программистов, компьютерный форум 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
20.12.2011, 20:22     Реализация стека с помощью массива
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
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;
        }
};
 
Текущее время: 15:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru