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

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

Восстановить пароль Регистрация
 
Hrollo
34 / 34 / 6
Регистрация: 05.11.2013
Сообщений: 147
18.01.2014, 22:39     Односвязный список #1
Всем привет. Помогите разобраться с односвязным списком. Вот собственно и вопросы:
1) Если я правильно понял то список это чтото вроде бесконечного динамического массива?
2) Что бы получить данные из конкретного элемента списка, нужно пройти от начала списка до нужного места?
3) Список в основном используется в структурах и классах?
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
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
#include <iostream>
#include <conio.h>
#include <cstring>
 
 
using namespace std;
 
struct Student
{
    char name[15];
    int score;
    Student *next;
};
 
void Add(Student **b)
{
    *b = new Student;
    char *temp = new char[15];
    cout<<"Enter name:";
    cin.getline(temp,15);
    if(strcmp(temp,"q")==0 || strcmp(temp,"Q")==0)
    {
        (*b)->next=NULL;
        (*b)=(*b)->next;
        return;
    }
    strcpy((*b)->name,temp);
    cout<<"Enter score:";
    (cin>>(*b)->score).get();
    (*b)->next = NULL;
    Student *end = *b;
    for(;;)
    {
        char *temp = new char[15];
        end->next = new Student;
        end=end->next;
        cout<<"Enter name:";
        cin.getline(temp,15);
        if(strcmp(temp,"q")==0 || strcmp(temp,"Q")==0)
        {
            *end->name = '\0';
            end->score = NULL;
            end->next=NULL;
            end=end->next;
            break;
        }
        strcpy(end->name,temp);
        cout<<"Enter score:";
        (cin>>end->score).get();
        end->next=NULL;
        delete [] temp;
    }
}
 
void Print(Student *b)
{
    Student *p = b;
    while(p)
    {
            cout<<"Name:"<<p->name<<endl;
            cout<<"Score:"<<p->score<<endl;
            p=p->next;
    }
}
 
int main()
{
    
    Student *begin = NULL;
    Add(&begin);
    Print(begin);
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2014, 22:39     Односвязный список
Посмотрите здесь:

Односвязный список C++
C++ Односвязный список
C++ Односвязный список
Односвязный список C++
C++ Односвязный список
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
18.01.2014, 22:48     Односвязный список #2
1) Да, но не бесконечного, и не обязательно динамического. (Размер ограничен свободной памятью)
2) Обычно да. Но возможен вариант, когда в каждом узле списка, есть информация обо всех узлах списка.
3) ... Что? Список это и есть структура данных. Либо класс, если так угодно выражаться.
4) Что у вас там смотреть неохота, но с первого взгляда, вот что - почитайте на эту тему немножко. Особенно о проектировании классов, если уж собираетесь писать свой связанный список. На первый взгляд - жуть какая-то.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
19.01.2014, 02:09     Односвязный список #3
Автор, вот у меня вопрос: если ты сомневаешься вообще, что такое списки и смутно их представляешь...
...как ты написал этот код?
Hrollo
34 / 34 / 6
Регистрация: 05.11.2013
Сообщений: 147
19.01.2014, 03:04  [ТС]     Односвязный список #4
Я недавно начал изучать ООП. В книге уже дошел до классов и там на примере односвязного списка приводятся примеры стека и очереди. Для начала я решил разобраться что такое односвязный список, а потом переходить к стеку, очереди и тд.
Код написан по образцу из нескольких книг.
Yandex
Объявления
19.01.2014, 03:04     Односвязный список
Ответ Создать тему
Опции темы

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