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

NULL указатель - C++

Восстановить пароль Регистрация
 
Ddv122
Почемучка)
 Аватар для Ddv122
1231 / 291 / 15
Регистрация: 23.12.2010
Сообщений: 1,973
Записей в блоге: 1
08.04.2012, 14:25     NULL указатель #1
Идея состоит в том чтобы создать класс Стек на основе односвязного списка. Строка с 0xc0000005 № 36. Не могу найти в чем проблема, может кто поопытней подскажет.

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
#include <iostream>
#include <malloc.h>
#include <windows.h>
using namespace std;
 
template <class T>
class Stack
{
private:
    struct Elem{
        T data;
        Elem *NextElemPtr;
    };
    
public:
    Elem *FirstElemPtr;
    Elem *CurrentElemPtr;
 
    Stack()
    {
        FirstElemPtr=NULL;
    };
 
    void Push(T val)
    {
        Elem* newnode = (Elem*)malloc(sizeof(Elem));
        newnode->data=val;
        if(FirstElemPtr!=NULL)GetLast()->NextElemPtr=newnode; //если список не пуст
        else FirstElemPtr=newnode;
    };
 
    Elem* GetLast()
    {
        CurrentElemPtr = FirstElemPtr;
        if(CurrentElemPtr == NULL)return NULL;
                while(CurrentElemPtr->NextElemPtr!=NULL)CurrentElemPtr=CurrentElemPtr->NextElemPtr; 
        //пока следующий элемент не НУЛЛ переношу указатель на следующий
        return CurrentElemPtr;
    };
 
    void PrintList()
    {
        CurrentElemPtr = FirstElemPtr;
        if(CurrentElemPtr == NULL)cout<<"Stek pust";
        else 
        {
            do
            {
                cout<<CurrentElemPtr->data<<" ";
            }
            while((CurrentElemPtr = CurrentElemPtr->NextElemPtr)!=NULL);
        }
    };
 
 
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    Stack <int> obj1;
    obj1.Push(2);
    obj1.Push(3);
    obj1.PrintList();
    system("pause");
    return 0;
}
Добавлено через 16 минут
Ошибку нашел:
после 27 строки нужно указателю на следующий элемент списка присвоить NULL . newnode->NextElemPtr=NULL;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2012, 14:25     NULL указатель
Посмотрите здесь:

C++ Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка?
C++ Не работает код: m_web1.Navigate ('gidro.htm',0,0,NULL,NULL);
Сделать указатель на указатель NULL C++
Указатель при инициализации не равен NULL C++
C++ Почему delete не устанавливает автоматически указатель в NULL?
C++ Как получить ссылку на указатель или указатель на указатель в массиве?
C++ Указатель и NULL
C++ Как работает нулевой указатель null

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 23:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru