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

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

Войти
Регистрация
Восстановить пароль
 
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

Односвязный список: где-то закралась ошибка - C++

19.09.2011, 20:31. Просмотров 319. Ответов 2
Метки нет (Все метки)

Не могу найти где ошибка и всё тут, наверняка ошибка глупая и я её попросту не замечаю.

Сам класс список:
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
class List
{
    struct element
    {
        element(string s, element *next=NULL)
        {
            data=s;
            Next=next;
        }
        string data;
        element *Next;
    };
 
    element *Head;
    element *Tail;
 
public:
    List(string str)
    {
        Head=new element(str,0);
        Tail=Head;
    }
 
    void addToTail(string str)
    {
        element *temp=new element(str,0);
        if (Tail)
         Tail->Next=temp;
        else
         Head=Tail=temp;
    }
 
    void addToHead(string str)
    {
        element *temp=new element (str,0);
        if(Head)
        {
            element *oldHead=Head;
            Head=temp;
            temp->Next=oldHead;
        }
        else
         Head=Tail=temp;
    }
 
    void print()
    {
        element *temp=Head;
        while(temp)
        {
            cout<<temp->data<<' ';
            temp=temp->Next;
        }
        cout<<endl;
    }
 
     ...
 
 
 
    ~List()
    {
        element *temp;
        while(Head)
        {
            temp=Head;
            Head=Head->Next;
            delete temp;
        }
    }
};
main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    List test("simple");
    test.free();
    test.addToTail("text");
    test.addToTail("is");
//    test.addToTail("so");
//    test.addToTail("simple");
    test.print();
//    cout<<"After reverse():\n";
//    test.reverse();
//    test.print();
}
То что класс работает с ошибками заметил когда попытался добавить больше чем 2 элемента в список, где же я ошибся при описании класса?

Добавлено через 4 минуты
Через addToHead тоже получается что хранится только два последних добавленных элемента.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2011, 20:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Односвязный список: где-то закралась ошибка (C++):

Использование классов. Где закралась ошибка? - C++
Добрый день! При компиляции данной программы на экран выводится только надпись: &quot;Для продолжения нажмите любую клавишу...&quot;. Возможно...

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

Ошибка добавления в односвязный список - C++
Здравствуйте! Срочно помогите исправить ошибку в программе. Задача: Из бинарного дерево все отрицательные элементы добавить в односвязный...

Сформировать список из 10 книг, используя динамическую структуру данных односвязный список - C++
друзья спасайте Сформировать список из 10 книг, используя динамическую структуру данных односвязный список С++

Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке - C++
Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке.

Задача C++. Линейный список. Где ошибка? - C++
Добрый день! Имеется такая задача: В файловой системе каталог файлов организован как линейный список. Для каждого файла в каталоге...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
20.09.2011, 10:02 #2
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
#include <string>
#include <iostream>
 
using std::string;
using std::cout;
using std::endl;
 
class List
{
    struct element
    {
        element(string s, element *next=NULL)
        {
            data=s;
            Next=next;
        }
        string data;
        element *Next;
    };
 
    element *Head;
    element *Tail;
 
public:
    List(string str)
    {
        Head=new element(str,0);
        Tail=Head;
    }
 
    void addToTail(string str)
    {
        element *temp=new element(str,0);
        if (Tail)
        {
         Tail->Next=temp;
         Tail = temp;
        }
        else
         Head=Tail=temp;
    }
 
    void addToHead(string str)
    {
        element *temp=new element (str,0);
        if(Head)
        {
            temp->Next=Head;
            Head = temp;
        }
        else
         Head=Tail=temp;
    }
 
    void print()
    {
        element *temp=Head;
        while(temp)
        {
            cout<<temp->data<<' ';
            temp=temp->Next;
        }
        cout<<endl;
    }
 
    ~List()
    {
        element *temp;
        while(Head)
        {
            temp=Head;
            Head=Head->Next;
            delete temp;
        }
    }
};
 
int main()
{
    List test("simple");
    //test.free();
    test.addToTail("text");
    test.addToTail("is");
    test.addToTail("so");
    test.addToTail("simple");
    test.print();
    test.addToHead("hello");
    test.addToHead("end");
    test.addToTail("now");
    test.print();
//    cout<<"After reverse():\n";
//    test.reverse();
//    test.print();
}
1
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
20.09.2011, 11:41  [ТС] #3
Ага, теперь сегодня на свежую голову уже понятно где я вчера накосячил.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2011, 11:41
Привет! Вот еще темы с ответами:

Односвязный список - C++
Посмотрите программу, правильно ли я вывожу список? Почему список выводится только из 7 цифр, и как можно написать с помощью функций?...

Односвязный Список - C++
Как реализовать список в этом коде, необязательно писать код буду благодарен за совет или подсказку! #include &quot;stdafx.h&quot; #include...

Односвязный список - C++
Нужно составить код для односвязного списка (формирование и вывод). При этом нельзя использовать классы(( Вроде код правильный, но...

Односвязный список - C++
как в односвязном списке сделать проверку на одинаковые элементы? и если они есть, удалить один из них.


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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