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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
horrorman
2 / 2 / 0
Регистрация: 08.09.2010
Сообщений: 44
#1

Стек, связный список и глупый вопрос - C++

03.03.2011, 19:43. Просмотров 716. Ответов 3
Метки нет (Все метки)

Содержание 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
62
63
64
65
66
67
68
69
70
71
72
73
#include <cstddef> // Определение константы NULL
 
template <typename T> class Stack
{
public:
    Stack();
    Stack(const Stack<T>& aStack);
    ~Stack();
    T pop();    //Выталкиваем элемент из стека
    void Push(T& newItem);
    bool IsEmpty();
    void blabla(){}
private:
    struct Elem{
        T item;
        Elem* next;
    };
    Elem* head;
};
 
template <typename T>
Stack<T>::Stack () : head(NULL)
{
} // Конец конструктора по умолчанию
 
template <typename T>
Stack<T>::Stack(const Stack<T>& aStack)
{
    if (aStack.head == NULL)
        head = NULL; // Исходный список пуст
    else
    {
    // Копируем первый узел
        head = new Elem;
        head->item = aStack.head->item;
        // Копируем остальную часть списка
        Elem *newPtr = head; // Новый указатель на список
        for (Elem *origPtr = aStack.head->next; origPtr != NULL; origPtr = origPtr->next){
            newPtr->next = new Elem;
            newPtr = newPtr->next;
            newPtr->item = origPtr->item;
        } // Конец цикла for
 
        newPtr->next = NULL;
    } // Конец оператора if
} // Конец конструктора копирования
 
template <typename T>
Stack<T>::~Stack()
{
    // Выталкивать элементы, пока стек не станет пустым
    while (IsEmpty())
    pop();
// Диагностическое утверждение: head == NULL
}// Конец деструктора
 
template <typename T>
void Stack<T>::Push(T& newItem)
{
    // Создаем новый элемент
    Elem *newPtr = new Elem;
 
    newPtr->item = newItem;
    // Вставить новый узел
    newPtr->next = head;
    head = newPtr;
} // Конец функции push
 
template <typename T>
bool Stack<T>::IsEmpty()
{
    return head == NULL;
} // Конец функции isEmpty
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stack.h"
#include <iostream>
 
using namespace std;
 
int main()
{
    Stack<int> st();
    st.Push(100);
    st.IsEmpty();
    st.blabla();
    return 0;
}
При компиляции ругается:
Код
/home/horrorman/work/stack_list/main.cpp||In function ‘int main()’:|
/home/horrorman/work/stack_list/main.cpp|9|error: request for member ‘Push’ in ‘st’, which is of non-class type ‘Stack<int>()’|
/home/horrorman/work/stack_list/main.cpp|10|error: request for member ‘IsEmpty’ in ‘st’, which is of non-class type ‘Stack<int>()’|
/home/horrorman/work/stack_list/main.cpp|11|error: request for member ‘blabla’ in ‘st’, which is of non-class type ‘Stack<int>()’|
||=== Build finished: 3 errors, 0 warnings ===|
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2011, 19:43     Стек, связный список и глупый вопрос
Посмотрите здесь:

Стек через связный список - C++
Здравствуйте мне нужно переделать стек через указатели и связный список. #include &lt;iostream&gt; #include &lt;locale.h&gt; using namespace...

Стек (связный список). Нужно ли проверять на пустоту? - C++
Всем добра, у меня к Вам есть парочка вопросов о стеке, буду благодарен за помощь. Передо мной стояла задача: 1) Инициализировать...

Связный список (Используя структуру описания даты, построить связный список студентов, сформированный в алфавитном порядке) - C++
Здраствуйте! Помогите пожалуйста найти косяк. Выводится только первая строчка из списка студентов. Вот такая задачка : Программа...

Оч глупый вопрос - C++
вот вместо цифры 1 как поставить переменную p-&gt;Bitmap-&gt;SaveToFile(&quot;C:\\bm\\rf\\1.bmp&quot;); до этого баловался только с борландом.. поэтому...

Извините за глупый вопрос. - C++
Как в С++ записывается &quot;и&quot;? (Например в Pascal это &quot;and&quot;). И как записать это в условие типа: if (N&lt;1000) &quot;и&quot; (N&gt;100) { bla bla bla...

Глупый вопрос по шаблонам - C++
Доброе время суток! Я достаточно опытный программист Java, но жизнь, как говорится, заставила переквалифицироваться на C++, причем,...

Глупый вопрос по указателям? - C++
Здравствуйте! Подскажите как это работает? Правильно ли я понимаю? struct A { }; struct B: public A { int var1; ...

простой и глупый вопрос - C++
Да, вопрос немного глуповат, но в нете так ничего и не нашла. Либо просто вводила не то для поиска. Не знаю короче. Суть вопроса: У меня...

Глупый вопрос (возведение в квадрат) - C++
Всем привет. Почему то не работает следующая элементарныя строчка кода. Значения y получаются отрицательными, например около -30000, хотя...

Глупый вопрос про наследование - C++
Вот фрагмент кода, реального: class CListviewParamPrimary : public CListviewParamFloats { private: /** * @brief Возвращает...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
03.03.2011, 19:50     Стек, связный список и глупый вопрос #2
Некорректное объявление
C++
1
Stack<int> st();
В данном случае вы объявляете функцию , возвращающую объект Stack<int>, не принимающую параметров, с названием st. В вашем случае скобки () лишние, объявление переменной должно выглядеть так
C++
1
Stack<int> st;
lemegeton
03.03.2011, 19:59
  #3

Не по теме:

List, stack and a stupid question.
практически
Lock stock and two smoking barrels.

horrorman
2 / 2 / 0
Регистрация: 08.09.2010
Сообщений: 44
03.03.2011, 20:18  [ТС]     Стек, связный список и глупый вопрос #4
Цитата Сообщение от lemegeton Посмотреть сообщение

Не по теме:

List, stack and a stupid question.
практически
Lock stock and two smoking barrels.

Верно подмечено
Yandex
Объявления
03.03.2011, 20:18     Стек, связный список и глупый вопрос
Ответ Создать тему
Опции темы

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