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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 76, средняя оценка - 4.84
Nonick
0 / 0 / 0
Регистрация: 11.10.2009
Сообщений: 3
#1

Построение списка - C++

11.10.2009, 20:02. Просмотров 9492. Ответов 10
Метки нет (Все метки)

В интернете очень много инфы по поводу построения списка через класс "List" или подобных. Но как построить список не прибегая к классам?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2009, 20:02     Построение списка
Посмотрите здесь:

Построение односвязного списка - C++
Имеется следующая функция считывающая структуру из файла и создающая односвязный список. Проблема в том, что если в файле > 1 э-та -...

Построение линейного самоадресуемого списка - C++
задание: Напишите программу создания линейного самоадресуемого списка из 10-и элементов. В поле данных каждого элемента списка – порядковый...

Реализовать ведение списка забронированных и списка купленных билетов в кинозале кинотеатра - C++
Приветствую! работаю на Builder Borland c++ - программирую таблицы и кнопки такое задание : Реализовать ведение списка забронированных...

Проверка, пуст ли список, очистка списка, печать списка в направлении от верха к низу - C++
Доброго вечера. Пожалуйста помогите разобраться с заданием на структуры, и подскажите с чего здесь начинать? 1) Кольцевой...

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

Добавить в конец списка L1 все элементы списка L2 - C++
Разработать программу обработки односвязных линейных списков с числом элементов в списке не менее пяти в соответствии с индивидуальным...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
11.10.2009, 20:11     Построение списка #2
заново изобрести велосипед? тут на форуме он уже не раз изобреталься. и односвязный и двусвязный, попробуйте поиском с ключевым словом "список"
patriot2008
72 / 72 / 4
Регистрация: 04.12.2008
Сообщений: 463
11.10.2009, 21:13     Построение списка #3
В двух словах, это класс с информационной частью и указателем на следующий элемент (если двусвязный, то еще и на предыдущий).
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
11.10.2009, 21:24     Построение списка #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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* First node of the list is not used to store actual values*/
/* Last node has "next" pointer equal to zero */
typedef struct _node { 
    int value;
    struct _node * next;
}Node,List;
/*Sets the end of list to it's start*/
void CreateList(List * list) {
    list->next=NULL;
};
void AddNode(List * list,int value) {
    Node * node;
    //if the end of list is found
    if(list->next==NULL) { 
        //insert to the end
        list->next = (Node*) malloc(sizeof( List));
        list->next->value=value;
        list->next->next=NULL;
        return;     
    };//end of looking up
 
    //if the right place is found
    if(list->next->value >= value)  {
        //insert there
        node = (Node*)malloc(sizeof( List));
        node->value = value;
        node->next = list->next;
        list->next = node;  
    } else //keep searching - call the same for next node.
        AddNode(list->next,value);
};
int DelNode(List * list,int value) { 
    Node * tmp;
    //if this is the end - quit.notging deleted.
    if(list->next==NULL) return 0;
    if(list->next->value==value) { 
        //deleted something.return true.
        tmp = list->next->next;
        free(list->next);
        list->next = tmp;
        return 1;//else keep searching
    } else return DelNode(list->next,value);
};
void PrintList(List * list) { //thats just simple.
    Node * tmp;
    if(list->next == NULL)  {
        printf("List is empty");
        return;
    }
    tmp = list->next;
    while(tmp !=NULL) { 
        printf("%d ",tmp->value);
        tmp=tmp->next;
    };
};
int CntList(List * list) { //even more simple
    int i = 0 ;
    Node * tmp = list;
    while(tmp->next != NULL) { 
        i++;
        tmp=tmp->next;
    };
    return i;
};
int OccList(List * list,int value ) { 
    if(list->next == NULL) return 0;
    if(list->next->value == value)
        return 1+OccList(list->next,value);
    if(list->next->value >value ) 
        return 0;
    return OccList(list->next,value);
};
int CdvList(List * list) { 
    if(list->next == NULL)
        return 0;
    if(list->next->next ==NULL) 
        return 1;
    if(list->next->value == list->next->next->value)
        return CdvList(list->next);
    else 
        return 1+CdvList(list->next);
};
int RanList(List * list,int value1, int value2) { 
    if(value1 >value2){
        printf("Invalid range\n");
            return -1;
    }
    if(list->next==NULL)
        return 0;
    if(list->next->value > value2 ) 
        return 0;
    if(list->next->value < value1 ) 
        return RanList(list->next,value1,value2);
    return RanList(list->next,value1,value2)+1;
};
int main () { 
    char command[4];
    int param1,param2,tmp;
    List list;
    CreateList(&list);
    while(1) { 
        printf("Enter command : ");
        scanf("%s",command);
        if(!strcmp(command,"pri") ) { 
            PrintList(&list);
            printf("\n");
        };
        if(!strcmp(command,"ins") ) { 
            scanf("%d",&param1);
            AddNode(&list,param1);
        };
        if(!strcmp(command,"del") ) { 
            scanf("%d",&param1);
            if(!DelNode(&list,param1))
                printf("There is no given value in the list\n");
        };
        if(!strcmp(command,"cnt") ) { 
            printf("Number of nodes : %d\n",CntList(&list));
        };
        if(!strcmp(command,"cdv") ) { 
            printf("Number of unique nodes: %d\n",CdvList(&list));
        };
        if(!strcmp(command,"occ") ) { 
            scanf("%d",&param1);
            printf("There are %d entries of %d in list\n",OccList(&list,param1),param1);
        };
        if(!strcmp(command,"ran") ) { 
            scanf("%d %d",&param1,&param2);
            if( (tmp = RanList(&list,param1,param2))>=0)
                printf("Number of nodes within selected range is %d\n",tmp);
        };
        if(!strcmp(command,"end") )  
            break;
    };
    return 0;
};
patriot2008
72 / 72 / 4
Регистрация: 04.12.2008
Сообщений: 463
11.10.2009, 21:28     Построение списка #5
Класс, не только построение списка ,но и его обработка...
Жекас
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 3
18.11.2009, 03:52     Построение списка #6
XuTPbIu_MuHTAu, помоги пожалуйста написать прогу:ввести фамилию ,кафедру,специальность,оценку студента.Отсортировать этих студентов по кафедрам,посчитать средний бал по кафедрам.Пожалуйста,если можешь,напиши!
Артур214
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 5
23.11.2009, 15:09     Построение списка #7
С начала суток прошло N секунд (N-целое).Найти количество минут и секунд ,прошедших с начала последнего часа . помогите решить
Sayrus89
31 / 31 / 1
Регистрация: 26.10.2009
Сообщений: 98
09.12.2009, 02:40     Построение списка #8
Цитата Сообщение от Артур214 Посмотреть сообщение
С начала суток прошло N секунд (N-целое).Найти количество минут и секунд ,прошедших с начала последнего часа . помогите решить
int минут = N%3600 / 60;
int секунд = N%3600 % 60;
CyberWind
0 / 0 / 0
Регистрация: 05.03.2010
Сообщений: 28
12.03.2010, 12:09     Построение списка #9
Хех, по мне этот код ровня дрвенекитайсуой грамоте Правда я только начал изучение программирования, и метаюсь от С# до Ассемблера. Хотя когда-то изучал TurboPascal, но видно этого мало. Эм думаю это не в тему, но все же, на ваш взгляд, как лучше усваивается язык через книги или через копирование и разбирание когда по строчкам?
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
25.06.2012, 12:31     Построение списка #10
Кому как... Лучший способ, это когда есть преподаватель, который все объяснит. По книгам учится сложнее. По примерам сложнее всего. Но я например в языке Python разобрался имея под рукой 3 программы - шарик отскакивающий от стенок экрана, змейка и пример с 3д графикой на OpenGl. Ушло порядка двух недель, после которых я уже мог писать неплохие программы с 3д.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2012, 17:50     Построение списка
Еще ссылки по теме:

Необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - обработка списка. Сначала в программе должен - C++
Вывести на экран все записи товаров, определенного ценового диапазона. Ценовой диапазон указывается пользователем. ТОВАР: наименование...

Используя производные классы, определить класс параметризованного списка одного из следующих типов. Применить его для построения списка объектов указа - C++
Используя производные классы, определить класс параметризованного упорядоченного списка. Применить его для построения упорядоченного...

Списки. Как создать одновременно 2 списка? Как из второго списка поместить элементы в первый? - C++
2 самых главных вопроса: как создать одновременно 2 списка? как из второго списка поместить элементы в первый? Вообще нигде не могу...

Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2 - C++
Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2. Список L отсортировать в порядке...

Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2 - C++
Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2. Список L отсортировать в порядке...


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

Или воспользуйтесь поиском по форуму:
vanomux
3 / 3 / 0
Регистрация: 08.02.2012
Сообщений: 17
27.06.2012, 17:50     Построение списка #11
посмотри тут подробно описано http://algorithmlib.org/algoritm
Yandex
Объявления
27.06.2012, 17:50     Построение списка
Ответ Создать тему
Опции темы

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