Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Структура связанного двунаправленного списка



Для того чтобы связать отдельные структурные переменные в двунаправленный список, в структурный шаблон включены два указателя: - на предыдущий элемент списка prior;

- на следующий элемент списка next.

Начало Конец

списка списка

 
 


Полное описание структурного шаблона abiturient будет иметь вид:

struct abiturient { char Name[10];

char LastName[10];

struct abiturient *prior; //указатель на предыдущий элемент

struct abiturient *next; //указатель на следующий элемент

};


1.2. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.

1. Изучить материал данного методического пособия, привлекая лекции и дополнительную литературу;

2. Разработать схемы алгоритмов и программу для обработки данных в соответствии с конкретным вариантом.

1.3. ВАРИАНТЫ ЗАДАНИЙ

1. Создать массив структурных переменных, содержащий информацию о студентах группы со следующими полями: номер группы, фамилия, пол, оценки, полученные в сессию. Написать и протестировать функции:

- ввода данных в массив;

- расчета среднего балла для каждого студента в сессию;

- расчета среднего балла по каждому предмету для студентов группы в сессию;

- определения процента отличников из числа студентом мужского и женского пола.

2. На основе односвязного списка создать произвольную базу данных. Приложение должно содержать следующие функции:

- ввод новых записей;

- удаление записей;

- поиск записей по комбинации признаков;

- корректировка записей;

- вывод данных.

1.4. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Что такое структура и как ее можно объявить?

2. Каково назначение операции “.”?

3. Каково назначение операции “ ->”?

4. С какой целью применяется имя шаблона?

5. Какой объем оперативной памяти выделяется под структуру, массив структур?

6. Каким должен быть фактический параметр, если формальный параметр – указатель на структуру?


2. ЛАБОРАТОРНАЯ РАБОТА №2

Целью лабораторной работы является освоение основных приемов работы с бинарными и текстовыми файлами, содержащими структуры, а именно:

- объявление файлов;

- функции открытия и закрытия файлов;

- функции и процессов обработки данных: создания, дополнения, поиска, чтения и удаления структур из файла.

2.1. МЕТОДИЧЕСКАЯ ЧАСТЬ

Язык Си кроме стандартного ввода данных с клавиатуры и вывода результатов на экран предоставляет также возможность обмена при операциях ввода-вывода с внешними устройствами, в том числе, с файлами на диске.

С началом работы любой программы автоматически открываются некоторые стандартные потоки, например стандартный ввод (stdin) и стандартный вывод (stdout). По умолчанию они связаны с клавиатурой и экраном терминала соответственно. Поэтому в тех функциях ввода-вывода, которые использовались до сих пор, не указывалось, из какого потока берутся или куда помещаются данные: это известно по умолчанию.

Однако возможно открывать и другие потоки, чтобы связать их либо с файлами на диске, либо с другими физическими устройствами (например, принтером), записывать в них или считывать из них информацию. Для этого служат функции ввода-вывода верхнего уровня.

Доступ к потоку осуществляется с помощью указателя. Указатель на файл описывается следующим образом:

Все файлы в языке Си рассматриваются как потоки байтов.

FILE *fptr;

Тип FILE – структура, определенная в заголовочном файле <stdio.h>, содержащая некоторую информацию о файле: флаги состояния файла, размер буфера, указатель на буфер и т.д.

Описанный указатель можно связать с конкретным файлом в момент открытия данного файла с помощью функции: fopen()

Функция имеет три основных параметра: 1. имя файла, который следует открыть.

2. указатель на файл.

3. указывает, как будет использоваться файл.

Пример использования: FILE *in,*in1;

in=fopen("test","rt"); //для чтения

in1=fopen(filename,"a+"); //для чтения и дополнения

Параметры режимов функции fopen()

Параметр Действие
r Файл открывается только для чтения. При отсутствии файла появляется сообщение об ошибке
w Создание файла для записи. Существующий файл перезаписывается
a Файл открывается для добавления. Запись позволена только в конец файла. Новый файл создается для записи.
r+ Файл открывается для чтения и записи. При отсутствии файла появляется сообщение об ошибке
w+ Файл открывается для чтения и записи. Существующий файл перезаписывается
a+ Файл открывается для чтения и записи. Запись позволена только в конец файла. Несуществующий файл создается.
t Файл открывается в текстовом режиме.
b Файл открывается в двоичном режиме

Если открытие файла прошло успешно, функция fopen() возвращает значение - указатель на переменную типа FILE и связывает файл программы с физическим файлом

Если fopen() неспособна открыть требуемый файл, то она возвращает значение NULL. Поэтому в программу целесообразно вставить строку проверки:

if((in=fopen("test","r")==NULL)

{ printf(“Ошибка открытия файла”);

return (1); //выход с кодом возврата 1

}

По окончании работы с файлом он должен быть закрыт с помощью функции:

fclose( file_pointer)

В качестве аргумента используется указатель на файл. Если закрытие прошло успешно, функция возвращает значение 0.

Для чтения и записи данных в файл имеются функции, аналогичные уже известным функциям ввода-вывода:





Дата публикования: 2015-02-22; Прочитано: 261 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...