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

Стек на основе динамического массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти максимальный элемент матрицы http://www.cyberforum.ru/cpp-beginners/thread218983.html
Дана прямоугольная матрица, все элементы которой различны. в заштрихованной области, где min – минимальный элемент матрицы.
C++ Подправить программу, где-то ошибся) Не выводит седловые точки #include<conio.h> #include<stdio.h> void main(void) { int i,j, a, imin, imax,m,n,max,min,f; clrscr(); http://www.cyberforum.ru/cpp-beginners/thread218977.html
в чем ошибка? C++
делаю задания по книге. вот код #include <iostream.h> main() { int a, b; cout << "vvedite 2 chisla";
C++ Обратная матрица, IndexOf
нужно на vs2005 c++ сделать 2 вещи: 1)обратная матрица 2)Indexof чем проще написано тем лучше, главное чтобы норм компилировалось. ребят помогите,горит!!....
C++ Найти количество нулевых элементов массива и заменить их на найденное значение http://www.cyberforum.ru/cpp-beginners/thread218965.html
Задание: Найти количество нулевых элементов и заменить их на найденное значение. Например, 1 2 0 4 5 7 0 – 1 2 2 4 5 7 2 Массив обьявил, а задание не пойму. Помогите кто чем может. #include <cstdlib>
C++ Типизированные файлы Помогите пожалуйста решить задачу в Паскале!!! Список товаров, имеющихся на складе, включает:  наименование товара;  количество единиц товара;  цену единицы товара;  дату поступления товара на склад. Вывести в алфавитном порядке список товаров, хранящихся более месяца, стоимость которых превышает 10000 рублей. подробнее

Показать сообщение отдельно
horrorman
2 / 2 / 0
Регистрация: 08.09.2010
Сообщений: 44
23.12.2010, 21:45  [ТС]     Стек на основе динамического массива
Цитата Сообщение от SashaPinsk Посмотреть сообщение
Нельзя выделять память для каждого элемента массива. Память можно выделять только под указатели, т. е. тебе нужно реализовать аналог realloc (си) или использовать динамические структуры данных аля список.
Это я понял и решил выделять память так:
C++
1
mas =(T*) malloc(size*sizeof(T))
Выделяет нормально, но как увеличить ее непонятно

C++
1
mas = (T*) realloc(mas, (size+1)*sizeof(T));
неработает, на всякий случай весь код:

stack.h
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
#include <iostream>
using namespace std;
 
template <typename T> class Stack
{
public:
    Stack(int _size):size(_size){mas =(T*) malloc(size*sizeof(T));  top = 0;}
    ~Stack(){free(mas); mas = NULL;}}
    int StackSize();
    void Push(T item);  //Помещаем элемент в стек
    T pop();    //Выталкиваем элемент из стека
    T AddElem(T item);
private:
    T* mas_temp;
    T* mas;
    int top;
    int size;
};
 
template <typename T>
int Stack<T>::StackSize()
{
    return size;
}
//Помещаем элемент в стек
template <typename T>
void Stack<T>::Push(T item)
{
    if(top >= size)
    {
        cout << "\nStack is full. \n";
        return;
    }
    mas[top] = item;
    top++;
}
 
//Выталкиваем элемент из стека
template <typename T>
T Stack<T>::pop()
{
    if(top <=0)
    {
        cout << "\nStack is empty.\n";
        return 0;
    }   
    top--;
    return mas[top];
}
 
//Добавляем елемент в стек
template <typename T>
T Stack<T>::AddElem(T item)
{
    int size;
    size = this->StackSize();
    mas = (T*) realloc(mas, (size+1)*sizeof(T));
    cout << this->StackSize() << endl;
    top++;
    return 0;
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stack.h"
#include <iostream>
using namespace std;
 
int main()
{
    int i, size;
    Stack<int> st1(7);
    for (i = 0; i < 6; i++)
    {
        st1.Push(i + 5);
    }
    st1.AddElem(15);
    size = st1.StackSize();
    cout << size << endl;
    cout << "Elements from 1st stack" << endl;
    for (i = 0; i < size-1; i++)
        cout << st1.pop() << ' ';
    cout << "\n" << endl;
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru