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

Найти min число в списке(Динамическая память) - C++

Восстановить пароль Регистрация
 
Tachilka
3 / 3 / 0
Регистрация: 13.10.2010
Сообщений: 17
18.11.2010, 15:06     Найти min число в списке(Динамическая память) #1
Всем привет!! Очень прошу помочь мне с заданием. Спасибо.
Написать программу, которая размещает в динамической памяти данные − действительные числа − в виде списка. Список создается путем последовательного добавления новых элементов в конец (или начало) списка (окончание ввода определяется отдельным запросом). Программа должна вывести весь список на экран и, кроме того найти минимальное число, содержащееся в списке.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2010, 15:06     Найти min число в списке(Динамическая память)
Посмотрите здесь:

C++ Динамическая память
Динамическая память C++
C++ Динамическая память
C++ Динамическая память
C++ Динамическая память [new]
Динамическая память C++
Динамическая память C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.11.2010, 17:29     Найти min число в списке(Динамическая память) #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
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct tagNODE {
    double value;
    struct tagNODE * next;
} node_t;
 
typedef struct tagLIST {
    node_t * first;
    node_t * last;
} list_t;
 
int add_node(list_t * list, double value){
    node_t * node;
    
    if ( ( node = (node_t*)malloc(sizeof(node_t)) ) == NULL )
        return -1;
    
    node->value = value;
    node->next = NULL;
    
    if ( ! list->first )
        list->first = node;
    else
        list->last->next = node;
    list->last = node;
    
    return 0;
}
 
void clear_list(list_t * list){
    while ( list->first ){
        list->last = list->first->next;
        free(list->first);
        list->first = list->last;
    }
}
 
node_t * min_node(const list_t * list){
    node_t * curNode, * minNode;
    
    if ( ! list || ! list->first )
        return 0;
        
    minNode = list->first;
    for ( curNode = list->first->next; curNode; curNode = curNode->next )
        if ( curNode->value < minNode->value )
            minNode = curNode;
    
    return minNode;
}
 
void print_list(const list_t * list){
    node_t * node;
    
    if ( ! list || ! list->first )
        return;
        
    for ( node = list->first; node; node = node->next )
        printf("%.1f ", node->value);
}
 
int main(void){
    list_t list = { .first = NULL, .last = NULL };
    double value;
    char buf[BUFSIZ];
    
    printf("Enter some values one by line. Empty line - finish.\n");
    while ( printf("> ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ){
        if ( add_node(&list, atof(buf)) ){
            fprintf(stderr, "Can't add new node!\n");
            exit(1);
        }
    }
    
    if ( ! list.first ){
        fprintf(stderr, "List is empty!\n");
        exit(1);
    }
    
    printf("\nAll nodes:\n");
    print_list(&list);
    printf("\nThe minimum value is %.1f\n", ( min_node(&list) )->value);
    
    clear_list(&list);
    exit(0);
}
Yandex
Объявления
18.11.2010, 17:29     Найти min число в списке(Динамическая память)
Ответ Создать тему
Опции темы

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