Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связной список, Не выводит значения 
:(
    Опции темы
pubsy
Дата 10.4.2006, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Помогите пожалуйста разобратся.
Задача:Создать связной список, ввести целочисельные значения, вывести все значения по порядку.
Списал программку из книжки. Скомпилировал. Выводит только непонятное предупреждение, ошибок нету. Ввожу значения. Потом должно всё по порядку вывести, а не выводит.
И ещё, не понял что означает "=0" в выражении типа: virtual void show()=0;
Код

#include <iostream>
using namespace std;

class Data
{
private:
    int myValue;
public:
    Data(int val):myValue(val){}
    ~Data(){}
    void Show(){cout<<myValue<<endl;}
};

class Node
{
private:
        
public:
    Node(){}
    virtual ~Node(){}
    virtual Node* Insert(Data* theData)=0;
    virtual void Show()=0;
};

class InternalNode:public Node
{
private:
    Data* myData;
    Node* myNext;
public:
    InternalNode(Data* theData, Node* next);
    ~InternalNode(){delete myData; delete myNext;}
    virtual Node* Insert(Data *theData);
    virtual void Show(){cout<<myData; myNext->Show();}
};

InternalNode::InternalNode(Data* theData, Node* next):myData(theData),myNext(next){}

Node* InternalNode::Insert(Data* theData)
{
    InternalNode* dataNode=new InternalNode(theData,this);
    return dataNode;
}

class TailNode:public Node
{
private:

public:
    TailNode(){}
    ~TailNode(){}
    virtual Node* Insert(Data* theData);
    virtual void Show(){}
};

Node* TailNode::Insert(Data* theData)
{
    InternalNode* dataNode=new InternalNode(theData,this);
    return dataNode;
}

class HeadNode:public Node
{
private:
    Node* myNext;
public:
    HeadNode();
    ~HeadNode(){delete myNext;}
    virtual Node* Insert(Data* theData);
    virtual void Show(){myNext->Show();}
};

HeadNode::HeadNode()
{
    myNext=new TailNode;
}

Node* HeadNode::Insert(Data* theData)
{
    myNext=myNext->Insert(theData);
    return this;
}

class LinkedList
{
private:
    HeadNode* myHead;
public:
    LinkedList();
    ~LinkedList(){delete myHead;}
    void Insert(Data* theData);
    void ShowAll(){myHead->Show;}
};

LinkedList::LinkedList()
{
    myHead=new HeadNode;
}
void LinkedList::Insert(Data* pData)
{
    myHead->Insert(pData);
}

void main()
{
    Data* pData;
    int val;
    LinkedList ll;

    for(;;)
    {
        cout<<"Enter next value (0 to stop): ";
        cin>>val;
        if (!val) break;
        pData=new Data(val);
        ll.Insert(pData);
    }
    ll.ShowAll();
}

Помогите пожалуйста.
PM MAIL   Вверх
Бонифаций
Дата 10.4.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(pubsy @ 10.4.2006, 10:34 Найти цитируемый пост)
И ещё, не понял что означает "=0" в выражении типа: virtual void show()=0;


абстрактная функция. таким присваиванием вы говорите что тела этой виртуальной функции нет в этом классе. и она должна быть обязательно переопределена в наследниках.

Слушайте,а зачем вам вся эта война с классами? не проще с помощью STL сделать? Все решение в три строчки уложится

list<int> lst;
copy(ifstream_iterator<int>(stdin), ifstream_iterator<int>(), back_inserter(lst));
copy(lst.begin(),lst.end(), ofstream_iterator<int>(stdout," "));

Это сообщение отредактировал(а) Бонифаций - 10.4.2006, 11:15


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
pubsy
Дата 11.4.2006, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Спасибо. Но это университетское задание. Проверка знаний по теме указатели. Конечно я бы не занимался этим маразмом с классами...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.