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

Односвязный список - C++

Восстановить пароль Регистрация
 
thejadefalcon
 Аватар для thejadefalcon
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
15.12.2013, 13:22     Односвязный список #1
Где можно прочитать про это? Чтобы было просто написано: как создать список, как добавить туда элементы, как удалить список.
4 учебника прочитал, ни черта не понятно, даже не понял, как тупо создать список.

Добавлено через 50 минут
Дайте пожалуйста пример создания списка из чисел и добавления их туда.
Уже час сижу про эти списки читаю, как все реализовать не понимаю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2013, 13:22     Односвязный список
Посмотрите здесь:

Односвязный список C++
Односвязный список C++
C++ Односвязный список
односвязный список C++
C++ Односвязный список
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.12.2013, 13:42     Односвязный список #2
thejadefalcon, складывается впечатление, что вы читали учебники не по программированию... На форуме тем куча, да и помимо форума. Гугль то не кто не отменял... http://www.cprogramming.com/tutorial/lesson15.html
thejadefalcon
 Аватар для thejadefalcon
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
15.12.2013, 14:06  [ТС]     Односвязный список #3
Ну блин, честно ничего не могу понять. Тыкните меня носом пожалуйста, где на этой инструкции ввод элементов с клавиатуры?

Добавлено через 15 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct Node
{
    int a;
    Node *next;
};
 
int main()
{
    Node *start;    
    Node *list = new Node;  
return 0;
}
Так создается список или нет?
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.12.2013, 14:18     Односвязный список #4
thejadefalcon, вы конечно делайте что считаете нужным... Но мне кажется, что вам нужно начать с более элементарных вещей...
thejadefalcon
 Аватар для thejadefalcon
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
15.12.2013, 14:31  [ТС]     Односвязный список #5
Цитата Сообщение от xtorne21st Посмотреть сообщение
thejadefalcon, вы конечно делайте что считаете нужным... Но мне кажется, что вам нужно начать с более элементарных вещей...
С каких?

А вообще ваша ссылка отличная. Я инструкции на русском то не могу понять, а вы на английском дали)

Добавлено через 10 минут
Например про массивы. В интернете есть: как обьявить массив, как занести элементы, как вывести массив. Всего этого же я не могу найти про списки
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.12.2013, 14:44     Односвязный список #6
Цитата Сообщение от thejadefalcon Посмотреть сообщение
А вообще ваша ссылка отличная. Я инструкции на русском то не могу понять, а вы на английском дали)
http://lord-n.narod.ru/download/book...po_C/22/22.htm
thejadefalcon
 Аватар для thejadefalcon
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
15.12.2013, 15:03  [ТС]     Односвязный список #7
Хорошо, спасибо. Это я тоже находил.
C++
1
2
3
4
5
6
7
8
void slstore(struct address *i,
             struct address **last)
{
  if(!*last) *last = i; /* первый элемент в списке */
  else (*last)->next = i;
  i->next = NULL;
  *last = i;
}
Вот вроде бы это функция добавления элемента в конец списка. Но я не пойму, как эту функцию вызывать в главной функции программы, т.е. какие параметры туда передавать?
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.12.2013, 15:25     Односвязный список #8
Цитата Сообщение от thejadefalcon Посмотреть сообщение
Вот вроде бы это функция добавления элемента в конец списка. Но я не пойму, как эту функцию вызывать в главной функции программы, т.е. какие параметры туда передавать?
Очевидно, что сначала нужно создать саму структуру, а потом выполнять над ней действия. Исходя из http://lord-n.narod.ru/download/book..._C/22/2205.htm что-то типа такого:
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 <stdlib.h>
#include <stdio.h>
 
typedef struct address {
  char name[40];
  char street[40];
  char city[20];
  char state[3];
  char zip[11];
  struct address *next; /* ссылка на следующий адрес */
} info;
 
void slstore(info* i, info** last)
{
    {
        if (!*last)
        {
            *last = i; /* первый элемент в списке */
        }
        else
        {
            (*last)->next = i;
        }
        i->next = NULL;
        *last = i;
    }
}
 
int main()
{
    info* head = (info*)malloc(sizeof(info));
    info* last = NULL;
 
    slstore(head, &last);
}
thejadefalcon
 Аватар для thejadefalcon
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
15.12.2013, 15:34  [ТС]     Односвязный список #9
Чем отличается "typedef struct" от просто "struct"
И что такое "info"?
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.12.2013, 15:37     Односвязный список #10
thejadefalcon, Я тебе ещё раз говорю, начни с азов.
thejadefalcon
 Аватар для thejadefalcon
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
15.12.2013, 15:39  [ТС]     Односвязный список #11
Цитата Сообщение от xtorne21st Посмотреть сообщение
thejadefalcon, Я тебе ещё раз говорю, начни с азов.
Мне просто не понятно, почему в инструкции так, а Вы добавили своё кое-что..
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
15.12.2013, 16:46     Односвязный список #12
Цитата Сообщение от thejadefalcon Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
void slstore(struct address *i,
 struct address **last)
{
 if(!*last) *last = i; /* первый элемент в списке */
 else (*last)->next = i;
 i->next = NULL;
 *last = i;
}
Здесь *i - элемент, который будет добавлен в список, *last - указатель на конец списка. (Т.е. last указывает на переменную, которая указывает на последний элемент списка.)
Пример использования этой функции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    // указатели на начало и конец списка 
    address * pBegin = 0;
    address * pEnd = 0;
 
    // создадим первый элемент списка 
    address* pElement = new address;
    strcpy( pElement->name, "abcd" );
    slstore( pElement, &pEnd );
    
    // запомним указатель на начало списка 
    pBegin = pEnd;
 
    // добавим ещё один элемент 
    pElement = new address;
    strcpy( pElement->name, "efgh" );
    slstore( pElement, &pEnd );
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
15.12.2013, 17:10     Односвязный список #13
Цитата Сообщение от thejadefalcon Посмотреть сообщение
как тупо создать список.
как создать список, как добавить туда элементы, как удалить список
http://ci-plus-plus-snachala.ru/?p=57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2013, 17:59     Односвязный список
Еще ссылки по теме:

Односвязный список C++
C++ Односвязный список

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

Или воспользуйтесь поиском по форуму:
thejadefalcon
 Аватар для thejadefalcon
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
15.12.2013, 17:59  [ТС]     Односвязный список #14
Вроде бы создал список, и можно занести элементы (с помощью массива) но при выводе 1 элемент списка не определен
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
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
 
using namespace std;
struct number
{
    int num;
    number *next; /* ссылка на следующий адрес */
};
 
void Init(number **begin)
{
    int n;
    *begin = new number;
    
    printf("Enter the count of elements of the list:\n");
    scanf("%d", &n);
    int *A = new int[n];
    printf("Enter the elements:\n");
    for (int i = 0; i < n; i++)
        scanf("%d", &A[i]);
    (*begin)->next = NULL;
    number *end = (*begin);
    for (int i = 0; i < n; i++)
    {
        end->next = new number;
        end = end->next;
        end->num = A[i];
        end->next = NULL;
    }
}
void Print(number*b)
{
    number*print = b;
    while (print)
    {
        cout << " ";
        cout << print->num;
        print = print->next;
    }
 
}
 
int main()
{
    number *begin = NULL;
    Init(&begin);
    Print(begin);
    system("pause");
    return 0;
}
Скриншот
Yandex
Объявления
15.12.2013, 17:59     Односвязный список
Ответ Создать тему
Опции темы

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