Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Виктория_
46 / 1 / 0
Регистрация: 12.12.2011
Сообщений: 27
#1

Создать линейный двунаправленный список, упрорядоченный по убыванию

31.03.2012, 21:14. Просмотров 1434. Ответов 3
Метки нет (Все метки)

Создать линейный двунаправленный список, упрорядоченный по убыванию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2012, 21:14
Ответы с готовыми решениями:

Линейный двунаправленный список
Имеются сведения о больницах:название, количество мест, количество больных. ...

Линейный двунаправленный список
Есть такое задание: Линейный двунаправленный список, упорядоченный по...

Двунаправленный линейный список
Доброго времени суток! Я перевелся на 2ой курс в институте, где изучали С++,...

Двунаправленный линейный список
Нужно сделать из двунаправленного линейного списка, циклический и найти ср....

Двунаправленный линейный список строк
Двунаправленный линейный список строк. Нужно сформировать список, вывести его и...

3
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
31.03.2012, 23:11 #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
#include <iostream>
#include <list> 
using namespace std;
int main()
{
    list<int> L;
    int n, x;
    cin >> n;
    for(int i = 0; i < n; i++)
    {
        cin >> x;
        L.push_back(x);
    }
    
    L.sort();
    L.reverse();
 
    list<int>::iterator i;
    for (i = L.begin(); i != L.end(); ++i)
    {
        cout << *i << " ";
    }
    cout << endl;
    system("pause >> null");
    return 0;
}
1
easybudda
Модератор
Эксперт CЭксперт С++
10053 / 5973 / 1493
Регистрация: 25.07.2009
Сообщений: 11,312
01.04.2012, 00:24 #3
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct NODE {
    int value;
    struct NODE * prev;
    struct NODE * next;
} node_t;
 
typedef struct DESCLIST {
    node_t * first;
} desclist_t;
 
desclist_t * new_list(void){
    desclist_t * list;
    
    if ( ( list = (desclist_t*)malloc(sizeof(desclist_t)) ) == NULL ) 
        return NULL;
 
    list->first = NULL;
 
    return list;
}
 
void del_list(desclist_t * list) {
    node_t * tmp;
    while ( list->first ) {
        tmp = list->first->next;
        free(list->first);
        list->first = tmp;
    }
    free(list);
}
 
int insert(desclist_t * list, int value) {
    node_t * node;
 
    if ( ( node = (node_t*)malloc(sizeof(node_t)) ) == NULL )
        return -1;
    node->value = value;
 
    if ( list->first == NULL ) {
        node->prev = node->next = NULL;
        list->first = node;
    }
    else if ( list->first->value < node->value ) {
        node->prev = NULL;
        node->next = list->first;
        list->first->prev = node;
        list->first = node;
    }
    else {
        node_t * ptr = list->first;
        while ( ptr->next != NULL && ptr->next->value > node->value )
            ptr = ptr->next;
        node->prev = ptr;
        node->next = ptr->next;
        if ( ptr->next )
            ptr->next->prev = node;
        ptr->next = node;
    }
 
    return 0;
}
 
void dump(desclist_t * list) {
    node_t * node;
 
    if ( list->first == NULL )
        return;
    for ( node = list->first; node != NULL; node = node->next )
        printf("%d ", node->value);
 
    printf("\n");
}
 
void reversedump(desclist_t * list) {
    node_t * node;
 
    if ( list->first == NULL )
        return;
    for ( node = list->first; node->next != NULL; node = node->next )
        ;
    while ( node ) {
        printf("%d ", node->value);
        node = node->prev;
    }
 
    printf("\n");
}
 
int main(void){
    desclist_t * list;
    int value;
 
    if ( ( list = new_list() ) == NULL ) {
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
 
    printf("Enter some numbers and any nondigit symbol when done:\n");
    while ( printf("> ") && scanf("%d", &value) == 1 ) {
        if ( insert(list, value) ) {
            fprintf(stderr, "Memory error!\n");
            exit(1);
        }
    }
 
    printf("Descendant sorted:\n");
    dump(list);
    printf("Ascendant sorted:\n");
    reversedump(list);
 
    del_list(list);
    list = NULL;
 
    exit(0);
}

Не по теме:

Нашёл косяк, исправил, для проверки сделал вывод в обратную сторону...

2
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
01.04.2012, 00:27 #4
easybudda,
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 00:27

Линейный двунаправленный список из вещественных чисел
Cоздать линейный двунаправленный список из вещественных чисел. Удалить из...

Циклический двунаправленный список, упорядоченный по убыванию
Циклический двунаправленный список, упорядоченный по убыванию.

Создать двунаправленный список
Задание: Записи в линейном списке содержат ключевое поле типа *char(строка...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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