Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дана последовательность из N целых чисел (где N - константа) http://www.cyberforum.ru/cpp-beginners/thread535470.html
Дана последовательность из N целых чисел (где N - константа). Определить количество инверсий в этой последовательности (т.е. таких пар элементов, в которых большее число находится слева от меньшего:...
C++ Распечатать квадраты только 3-значных чисел от 1 до N 2. Распечатать квадраты только 3-значных чисел от 1 до N. 3. Распечатать все числа от 1 до N, не оканчивающиеся на цифру 3. 4. Распечатать все числа от 1 до N, имеющие делители 3, 4 и 7.... http://www.cyberforum.ru/cpp-beginners/thread535468.html
Распечатать все числа от 1 до N, у которых остатки от деления на число Z не превышают числа M. C++
1. Распечатать все числа от 1 до N, у которых остатки от деления на число Z не превышают числа M. Помогите написать((
Двумерные массивы. Четные строки матрицы сдвинуть на К элементов вправо. C++
Используя функции сформировать двумерный массив. Все четные строки матрицы сдвинуть циклически на К элементов вправо. Первую часть задания я смог сделать, а вот вторая не получается. ...
C++ WinApi console http://www.cyberforum.ru/cpp-beginners/thread535444.html
Всем доброго времени суток .Кто знает как сделать такое .когда запускаешь консоль сервера ,что бы мне на э-маил приходило ИП компьютера на котором его запустили что бы мне отправлялись сведения о...
C++ Динамический массив. Доброго вечера. Код представленный в 1 случае работает корректно. 1. случай. #include <cstdlib> #include <iostream> #include <stdio.h> #include <stddef.h> using namespace std; подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,847
01.04.2012, 00:24
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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru