Односвязные списки
Автор: Рустам Хасенов • Январь 8, 2022 • Практическая работа • 1,326 Слов (6 Страниц) • 242 Просмотры
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Южно-Уральский государственный университет»
(Национальный исследовательский университет)
Кафедра Автоматики и Управления
ОТЧЕТ
по практической работе №1
«Односвязные списки»
Вариант №25
Автор работы:
студент группы КЭ-217
____________Хасенов Р.С.
«__» ______________ 2021
Проверила:
__________ Вставская Е.В
«__» ______________ 2021
Челябинск 2021
Блок-схема:[pic 1]
[pic 2][pic 3][pic 4]
[pic 5]
[pic 6]
Результат работы:
[pic 7]
Исходный код программы:
// Односвязный линейный список (ОЛС)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct list
{
int field;
struct list *ptr;
};
// Инициализация списка (ОЛС)
struct list * init(int a)
{
struct list *lst;
lst = (struct list*)malloc(sizeof(struct list)); // выделение памяти под корень списка
lst->field = a;
lst->ptr = NULL; // это последний элемент списка
return(lst);
}
// Добавление элемента (возвращает добавленный элемент) (ОЛС)
struct list * addelem(list *lst, int number)
{
struct list *temp, *p;
temp = (struct list*)malloc(sizeof(list)); // выделение памяти под узел списка
p = lst->ptr; // временное сохранение указателя
lst->ptr = temp; // предыдущий узел указывает на создаваемый
temp->field = number; // сохранение поля данных добавляемого узла
temp->ptr = p; // созданный узел указывает на следующий элемент
return(temp);
}
// Вывод элементов списка (ОЛС)
void listprint(list *lst)
{
struct list *p;
p = lst;
do {
printf("%d ", p->field); // вывод значения элемента p
p = p->ptr; // переход к следующему элементу
...