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

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

Войти
Регистрация
Восстановить пароль
 
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
#1

Проблемы со списком, в чем ошибка? - C++

04.04.2013, 16:46. Просмотров 244. Ответов 3
Метки нет (Все метки)

Итак, изучал я, значит, C style lists (не знаю, как будет по-русски) и столкнулся с такой проблемой: надо его заполнить. Вроде все просто, написал следующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef ST_H
#define ST_H
 
//st.h
 
template <typename T>
class st{
public:
    st(T n);
    T a;
    st<T>* next;
};
 
template <typename T>
st<T>::st(T n){//конструктор
    a = n;
}
 
#endif // ST_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
//main.cpp
#include <iostream>
 
#include "include\st.h"
 
using namespace std;
 
void enter(st<int>* h){ //ввод
    int i;
    cin >> i;
    h = new st<int>(i); //указываем голове значение i
    st<int>* c = h; //создаем собственно сам "бегающий" указатель на элемент списка, с которым работаем
    cin >> i;
    while(i != 0){ //0 - конец ввода
        c = new st<int>(i); //добавляем в список новое значение
        c = c->next; //перескакиваем на следующий элемент
        cin >> i; //ещё раз вводим i
    }
    cout << h->next->a;//дебаговый вывод, тут-то он и выводит непонятные числа
}
 
int main(){
    st<int>* h; //указатель на голову
    enter(h); //вызываем ввод
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2013, 16:46     Проблемы со списком, в чем ошибка?
Посмотрите здесь:

В чем разница между простым линейным списком, и динамическим линейным списком? - C++
вопрос в теме

Проблемы с динамическим списком - C++
Почему-то выводит ошибку во время выполнения программы &quot;Необработанное исключение в &quot;0x501ed442 (msvcr100d.dll)&quot; в &quot;Динамично.exe&quot;:...

Ошибка со списком с кастомным классом - C++
Есть один список с кастомным классом gameObject. Прототип в game.h: extern std::list&lt;gameObject&gt; gameObjectList; Объявление в...

Ошибка со списком, возможно студия тупит - C++
Нужен список, начал вспоминать с банального, но не даёт... Выводит ошибку: Необработанное исключение по адресу 0x00E560B9 в Struct.exe:...

Ошибка в указателе при работе со списком - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; #include&quot;string.h&quot; using...

Ошибка при инициализации вектора списком - C++
В книге Страуструпа элементы вектора объявляются так vector&lt;int&gt; v = { 5 , 7 , 9 , 4 , 6 , 8 } ;В netbeans (linux ubuntu) ide выдаёт...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
04.04.2013, 17:39     Проблемы со списком, в чем ошибка? #2
Цитата Сообщение от MastAKK Посмотреть сообщение
template <typename T>
class st{
public:
* * st(T n);
* * T a;
* * st<T>* next;
};
template <typename T>
st<T>::st(T n){//конструктор
* * a = n;
}
Это ни разу не С-style lists.

C-Style list односвязный это как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
struct Node {
    void *data;
    Node *next;
};
 
void insertAfter(
    struct Node *node,
    struct Node *newNode ) {
    newNode->next = node->next;
    node->next = newNode;
}
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
04.04.2013, 17:45  [ТС]     Проблемы со списком, в чем ошибка? #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Это ни разу не С-style lists.

C-Style list односвязный это как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
struct Node {
    void *data;
    Node *next;
};
 
void insertAfter(
    struct Node *node,
    struct Node *newNode ) {
    newNode->next = node->next;
    node->next = newNode;
}
ладно, не в этом дело, не подскажете, в чем у меня в коде проблема?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 18:44     Проблемы со списком, в чем ошибка?
Еще ссылки по теме:

Ошибка 0xC0000005 при работе с двухсвязным списком - C++
В общем и целом, пытаюсь реализовать дерево как двунаправленный список для сортировки заданного массива симметричным обходом. Получается,...

Ошибка при работе со списком: необъявленный идентификатор - C++
не могу исправить ошибки((( #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;ctime&gt; using namespace std; template&lt;class T&gt;...

В чем ошибка - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;cmath&gt; using namespace std; void Formyla (int &amp;a, int&amp;b, int&amp;c) { ...

В чем ошибка? - C++
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;conio.h&gt; using namespace std; int main() ...


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

Или воспользуйтесь поиском по форуму:
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
04.04.2013, 18:44     Проблемы со списком, в чем ошибка? #4
Цитата Сообщение от MastAKK Посмотреть сообщение
в чем у меня в коде проблема?
Он не составляет связный список. Вынесите составление связного списка в отдельную функцию и все поймете.
Yandex
Объявления
04.04.2013, 18:44     Проблемы со списком, в чем ошибка?
Ответ Создать тему
Опции темы

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