Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

programmirovanie / ОПиАЯ_№3_12_спис_пример

.doc
Скачиваний:
33
Добавлен:
03.03.2016
Размер:
34.3 Кб
Скачать

L_t_1.c

#include <stdio.h>

#include <alloc.h>

#define node struct nd

/* структура узла */

node {

int data; /* данные */

node * next;

/* указатель на след. элемент */

};

/* функция добавления элемента в конец списка */

void add_item(node ** list, int data){

node * n = NULL; /* новый элемент */

node * h = *list; /* голова списка */

/* выделяем память */

n =(node *) malloc(sizeof(node));

/* заполняем новый элемент */

n->data = data;

n->next = NULL;

if (h == NULL){ /* если пустой список */

*list = n; /* изменяем голову */

}

else{

/* проходим до конца */

while (h->next != NULL)

{h = h->next;}

/* дописываем в конец */

h->next = n;

}

}

/* функция удаления элементов списка */

void kill_list(node ** list){

node * h = *list; /* голова списка */

/* проходим по списку */

while (h != NULL)

{

node * p = h; /* удаляемый элемент */

h = h->next;

/* удаляем элемент */

free(p);

}

list = NULL;

}

/* функция вывода списка на экран */

void print_list(node * list){

node * h = list; /* голова списка */

if (h == NULL){ /* если список пуст */

printf("пуст\n");

return;

}

/* проход по спику */

while (h != NULL){

/* вывод элемента */

printf("%d ", h->data);

h = h->next;

}

printf("\n");

}

/* функция поиска максимального элемента */

int find_max_item(node * list){

node * h = list; /* голова списка */

int max = -32768;

/* максимальный элемент иницализируем очень маленьким числом */

/* проход по спику */

while (h != NULL){

if (h->data > max)

{ /* если число больше максимума */

/* заменяем максимум */

max = h->data;

}

h = h->next;

} /* while */

/* возвращаем максимум */

return max;

}

/* считать с консоли (экран + клавиатура) */

/*возвращает адрес &new_list */

node * read_list_from_console(){

node * new_list = NULL; /* новый список */

int k = 0;

printf("Введите количество элементов

в списке : ");

/* считываем количество элементов */

scanf("%d", &k);

while (k){ /* пока k не станет 0 */

int data;

printf("Введите элемент : ");

scanf("%d", &data);

/* добавляем введенные элементы */

add_item(&new_list, data);

/* уменьшить k */

k--;

}

printf("Введеный список : ");

/* выводим список */

print_list(new_list);

/* возвращаем список */

return new_list;

}

int main(){

/* создаем список считанный с консоли */

node * list = read_list_from_console();

/* находим максимальный элемент */

int max = find_max_item(list);

/* открываем файл для записи */

FILE * file = fopen("result.max", "w");

if (file == NULL) { /* если файл не открылся */

return -1; /* выйти */

}

/* запись максимума в файл */

fprintf(file, "%d\n", max);

/* закрыть файл */

fclose(file);

/* вывести максимальный элемент */

printf("Максимальный элемент = %d\n", max);

/* удалить список */

kill_list(&list);

return 0;

}