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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
#1

Односвязный список, реализация - C++

25.05.2013, 17:28. Просмотров 1603. Ответов 4
Метки нет (Все метки)

Добрый вечер!

Пытаюсь разобраться как работают списки. Делаю последовательный односвязный список, в который можно добавить элемент, хотя бы первый (один).

Подскажите, пожалуйста, правильно ли я делаю?

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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
 
struct Lll
{
  Lll *next; //Указатель на след.элемент
  int ch; //Данные списка
};
 
void Lll_add(int a, Lll *end)
{
  Lll *Addelem = new Lll; //выделить память
  Addelem->ch = a; //внести данные
  Addelem->next = end; //пришить к списку
  end = Addelem;
}
 
void main()
{
    setlocale(0,"");
    int a;
    Lll St; //создаём список
    Lll *head=NULL; //указатель на голову списка
    Lll *end=NULL;  //указатель на конец списка
    cin >> a;
    Lll_add(a,end);
    
    
 
    cin.get();
    cin.get();
}

И ещё, подскажите, как вывести данный список?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2013, 17:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Односвязный список, реализация (C++):

Односвязный список (реализация без классов) - C++
Задача проста: создать список из слов, вводимых с клавиатуры, и вывести его на консоль. Всё вводит и выводит. Только откуда-то взялась &quot;Д&quot;...

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

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

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

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

Односвязный список - C++
Смотрю уроки по односвязному списку. У автора в 37 строке кода происходит инициализация структуры. Но как программа определит, что значения...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Рыжий Лис
Просто Лис
308 / 255 / 71
Регистрация: 17.05.2012
Сообщений: 1,053
Записей в блоге: 4
25.05.2013, 19:25 #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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
struct Lll
{
  Lll *next; //Указатель на след.элемент
  int ch; //Данные списка
};
 
Lll* Lll_add1(int a)
{
  Lll *Addelem = new Lll; //выделить память
  Addelem->ch = a; //внести данные
  Addelem->next = NULL;
  return Addelem;
}
// Добавление в список
void add(int a, Lll *beg)
{ Lll  *ne = new Lll ;  //новый элемент списка
  ne->ch = a; //внести данные
  ne->next = NULL;
  Lll *temp = beg;
  while (temp->next != NULL)
    temp = temp->next; // Поиск конца списка
  temp->next = ne;  // Привязывание нового элемента
}
void main()
{
    setlocale(0,"");
    int a;
    Lll *head=NULL; //указатель на голову списка
    cin >> a;
    head = Lll_add1(a);//первый элемент
 
    while(1){
    cin >> a;
    Lll_add(a,head);
    }
 
}
Добавлено через 5 минут
вывод можно сделать в цикле
C++
1
2
3
4
Lll *temp = beg;
  while (temp->next != NULL){
      out << temp->ch << endl;
}
1
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
26.05.2013, 10:21  [ТС] #3
Рыжий Лис, огромное вам спасибо! Буду разбираться с данным кодом!!
0
Moonlit
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 36
04.12.2016, 20:16 #4
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Lll_add(a,head);
можно узнать, что обозначает эта строчка?
0
Mathist
42 / 42 / 20
Регистрация: 18.04.2014
Сообщений: 97
Завершенные тесты: 1
04.12.2016, 20:25 #5
Moonlit, это вызов функции для добавления элемента a в список head.
Только должно быть add(a,head);, т.к. в переделанном варианте рыжего лиса нет функции Lll_add.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2016, 20:25
Привет! Вот еще темы с ответами:

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

Односвязный список - C++
Задание: Сформировать список вещественных чисел и вычислить сумму. На 32 строке где значения, выдает ошибку. Почему? Сумму этих...

Односвязный список - C++
Доброй ночи! Вроде все написала правильно, прога должна читать из файла KR8+.txt и записывать один элемент в KR8.txt в конец списка... но...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.12.2016, 20:25
Ответ Создать тему
Опции темы

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