
- •Структура билета
- •Подпрограммы обработки списков
- •Int CreateList (struct list **p )
- •Void PrintList (struct list *p)
- •Int inf_1_el (inf_type *X, struct list *s)
- •Int kz; // Код завершения функции: 0 - успех, 1 - неудача
- •Inf_type rez; // Результат - значение 1-го элемента
- •Int inf_k_el (inf_type *X, int k, struct list *p)
- •Inf_type rez; // Результат - значение k-го элемента
- •Int k; // Номер искомого элемента
- •Int inf_k_el (inf_type *x1, inf_type *x2, int k, struct list2 *p)
- •Inf_type rez1, rez2; // Вставить описания необходимых величин
- •Int k; // Номер искомого элемента
- •Int inf_k_el (inf_type *X, int k, struct list *p)
- •Inf_type rez; // Вставить описания необходимых величин
Структура билета
Билет содержит 5-6 задач, одна из которых - на составление программы и одна - на составление подпрограммы обработки списков.
Примеры их решения приведены далее. Разрешается пользоваться книгами.
Подпрограммы обработки списков
// Файл ListNE.C - функции создания и вывода списка
// функция создания списка (ввод значений из input.txt до EOF)
int CreateList (struct LIST **p )
{
INF_TYPE x; // Текущее значение
struct LIST *end,*new; // указатели последнего и нового элемента
*p=NULL;
while(fscanf(fin, F_, &x) != EOF)
{ new = (struct LIST *)malloc(sizeof(struct LIST));
new->INF_ = x;
new->next = NULL;
if(*p==NULL) *p = new;
else end->next = new;
end = new;
}
return 0;
}
// функция вывода списка
void PrintList (struct LIST *p)
{
// fprintf (fout, "\nЭлементы списка:\n");
for ( ; p!=NULL; p=p->next )
fprintf (fout, F_"\n", p->INF_);
}
// Файл List2NE.C - функции создания и вывода списка
// ПАР ЧИСЕЛ до EOF
// функция создания списка (ввод ПАР ЧИСЕЛ из input.txt до EOF)
int CrList2 (struct LIST2 **p )
{
INF_TYPE x1, x2;
struct LIST2 *end, *new;
*p=NULL;
while(fscanf(fin, F_ F_, &x1, &x2) == 2)
{ new=(struct LIST2 *)malloc(sizeof(struct LIST2));
new->INF1_ = x1; new->INF2_ = x2;
new->next = NULL;
if(*p==NULL) *p = new;
else end->next = new;
end = new;
}
return 0;
}
// функция вывода списка ПАР ЗНАЧЕНИЙ
void PrList2 (struct LIST2 *p)
{
// fprintf (fout, "\nЭлементы списка:\n");
for ( ; p!=NULL; p=p->next )
fprintf (fout, F_" "F_"\n", p->INF1_, p->INF2_);
}
// Файл ListSE.C - функции создания и вывода списка СЛОВ до EOF
// функция создания списка (ввод СЛОВ из input.txt до EOF)
Int CreateList (struct list **p )
{
// INF_TYPE x; // x теперь глобальная
struct LIST *end, *new;
*p=NULL;
while(fscanf(fin, F_, x) != EOF)
{ new=(struct LIST *)malloc(sizeof(struct LIST));
new->INF_ = x;
new->next = NULL;
if(*p==NULL) *p = new;
else end->next = new;
end = new;
x += strlen(x)+1; //* указатель на конец массива w
}
return 0;
}
// функция вывода списка
Void PrintList (struct list *p)
{
// fprintf (fout, "\nЭлементы списка:\n");
for ( ; p!=NULL; p=p->next )
fprintf (fout, F_"\n", p->INF_);
}
// P00_4.C Пример решения задачи (вместе с файлом ListNE.C)
// Задача 00.4. Составить функцию получения значения 1-го элемента
// заданного списка из целых чисел.
#include <stdio.h>
#include <stdlib.h>
// РЕШЕНИЕ ЗАДАЧИ 00.4: описание данных и функция INF_1_EL
#define INF_TYPE int // ТИП информации ВЫБРАТЬ: int char float char*
#define F_ "%d" // ФОРМАТ информации ВЫБРАТЬ: %d %c %f %s
#define INF_ Z // ИМЯ информации Z можно оставить или заменить
struct LIST // элемент списка
{ INF_TYPE INF_; // информация элемента списка
struct LIST *next; // ссылка на следующий элемент
};
FILE *fin, *fout; // Входной и выходной файлы
#include "listNE.c" // Функции создания и вывода списка
// Получение Х - значения 1-го элемента списка s
// Код завершения : 0 - есть 1-й элемент, 1 - список пуст.