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

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

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

C++ Описать функцию, которая определяет, входят ли все элементы первого списка в состав второго списка.
C++ Удалить из списка все элементы с нечётными значениями и вывести указатель p2 на начало преобразованного списка.
Списки. Функции добавление списка в конец и в середину другого списка. C++
Дублирование вхождения каждого элемента списка One и формирование из этих значений списка Double (пояснить условие) C++
Построение односвязного списка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
11.10.2009, 20:11     Построение списка #2
заново изобрести велосипед? тут на форуме он уже не раз изобреталься. и односвязный и двусвязный, попробуйте поиском с ключевым словом "список"
patriot2008
 Аватар для patriot2008
70 / 70 / 4
Регистрация: 04.12.2008
Сообщений: 463
11.10.2009, 21:13     Построение списка #3
В двух словах, это класс с информационной частью и указателем на следующий элемент (если двусвязный, то еще и на предыдущий).
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2218 / 733 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
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
 Аватар для patriot2008
70 / 70 / 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
 Аватар для 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
 Аватар для darkknight2008
61 / 61 / 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++ Написать код программы, выполняющей растяжку списка и вставку, удаление из списка и сжатие списка
C++ Построение линейного самоадресуемого списка

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

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

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