Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
injekt2
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 15
#1

Сортировка Односвязного списка - C (СИ)

14.04.2013, 13:45. Просмотров 408. Ответов 0
Метки нет (Все метки)

Помогите пожалуйста написать функцию сортировки (по году) и удаления из списка.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#define N 50

struct library{
char ganr[N];
char name_book[N];
char name_avtor[N];
int god;
int page;
char nal;
struct library *next;
}inform,*ptr_first=NULL,*ptr_last=NULL,*now=NULL;




void Vvod_elem();//Фунция ввода в список
void Del_elem ();//Фунция удаления из списка
void Vivod_all();//Функция вывода в виде таблице
void poisk_imen();//Фунцкия поиска по имени
void ganr_kol();//Фунция вывода кол-ва книг по жанру
void Vivod_god();//Фунция вывода кол-ва книг по году издательства
void Vivod_chitatel();//Фунция вывода кол-ва книг которые у читателей
void sort();//Функция сортировки книг одного автора по году издателсьства

int main ()
{
setlocale(LC_ALL, "Russian");
int k;
puts("\t\tМеню:\n");
puts("1.Добавление киниги в список");
puts("2.Удаление книги из библиотеки");
puts("3.Вывод на экран в виде таблицы");
puts("4.Поиск по имени автора");
puts("5.Подсчет книг по жанру");
puts("6.Подсчет книг по году больше заданого");
puts("7.Вывод книг у читателей");
puts("8.Сортирвка по году издательства");
puts("0.Выход\n");
while(1){
puts("Введите номер операции:");
scanf("%d",&k);
switch(k){
case 1:Vvod_elem();break;
case 2el_elem();break;
case 3:Vivod_all();break;
case 4oisk_imen();break;
case 5:ganr_kol();break;
case 6:Vivod_god();break;
case 7:Vivod_chitatel();break;
case 8:sort();break;
case 0:exit(1);break;
default: printf("\nОшибка ввода\n");
}
}
}
void Vvod_elem()
{
struct library *s=(struct library *)malloc(sizeof(struct library));
puts ("Операция добавление в библиотеку работает");


puts("\nВведите жанр:");
scanf ("%s",s->ganr);
puts("Введите название книги:");
scanf ("%s",s->name_book);
puts("Введите имя автора:");
scanf ("%s",s->name_avtor);
puts("Введите год издательства:");
scanf ("%d",&s->god);
puts("Введите количествао страниц");
scanf ("%d",&s->page);
puts("Введите наличие в библиотеке + или -");
scanf("%c",&s->nal);
s->next=0;
if (ptr_first==0)
ptr_first=s;
else
ptr_last->next=s;
ptr_last=s;
}
void Del_elem (){

puts("\t\tФункция удалеия елемента\n ");


}
void Vivod_all(){
puts("Фу-ция вывода на екран");
now=ptr_first;
printf(" _____________________________________________________________________\n");
printf("|Жанр | Книга | Автор | Год| Стр|Наличие|\n");
printf(" ---------------------------------------------------------------------\n");
while (now!= NULL)
{
printf("|%-13s|",now->ganr);
printf("%-23s|",now->name_book);
printf("%-13s|",now->name_avtor);
printf("%-4d|",now->god);
printf("%-4d|",now->page);
printf("%-7c|\n",now->nal);
printf(" ---------------------------------------------------------------------\n");
now = now -> next;
}
}
void poisk_imen(){
now=ptr_first;
char name[N];
printf("Введите имя автора: \n"); // Выводим запрос на ввод улицы
scanf("%s",name); // Запоминаем значение в переменную street
while(now!=NULL)
{ // Двигаемся по спику пока не дойдем до конца
if (!strcmp(now->name_avtor,name)) { // Если найден сорудник проживающий на заданной улице
printf("Автор найден\n");
// Выводим данные о сотруднике
printf("Жанр: %s\n",now->ganr);
printf("Книга: %s\n",now->name_book);
printf("Автор: %s\n",now->name_avtor);
printf("Год издательства: %d\n",now->god);
printf("Страницы: %d\n",now->page);
printf("Наличие в библиотеке: %c",now->nal);
}
now=now->next; // Переходим к следующему элементу
}
}

void ganr_kol(){}
void Vivod_god(){
int g;
now=ptr_first;
printf("Вывод книг с годом больше указаного\n");
printf ("Введите год: ");
scanf("%d",&g);
while(now!=NULL)
{
if(now->god>g)
{
printf("Жанр: %s\n",now->ganr);
printf("Книга: %s\n",now->name_book);
printf("Автор: %s\n",now->name_avtor);
printf("Год издательства: %d\n",now->god);
printf("Страницы: %d\n",now->page);
printf("Наличие в библиотеке: %c",now->nal);
}
else
{ printf("Книг с таким годом - нет!!!\n");}
now=now->next;
}
}
void Vivod_chitatel()
{ now=ptr_first;
while(now!=NULL)
{
if(now->nal=='-')
{
printf("Список книг выданых читателям\n");
printf("==============================\n");
printf("Жанр: %s\n",now->ganr);
printf("Книга: %s\n",now->name_book);
printf("Автор: %s\n",now->name_avtor);
printf("Год издательства: %d\n",now->god);
printf("Страницы: %d\n",now->page);

}
now=now->next;
}
}
void sort()
{}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 13:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сортировка Односвязного списка (C (СИ)):

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

Сортировка односвязного списка - C (СИ)
Всем доброго времени суток! Пишу курсавик по программированию, всё написал, осталась только одна функция уже голову всю сломал, никак не...

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

Сортировка односвязного списка (пузырьком) - C (СИ)
нужно отсортировать информацию о поездах по номеру поезда. Сортировку нужно сделать изменением узлов. При сортировке просто исчезает вторая...

Сортировка динамического односвязного списка - C (СИ)
Здравствуйте. Буду признателен за помощь в написании функции сортировки односвязного списка. Вначале с клавиатуры вводятся целые...

Удаление узла из односвязного списка. + Сортировка - C (СИ)
Уважаемые, форумчане! Помогите разобраться с работой функции void DeleteNodeByIndex(NODE *head,int k). Задача такова: задать список,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 13:45
Привет! Вот еще темы с ответами:

Не работает сортировка односвязного списка с считыванием из файла и выводом в файл - C (СИ)
Написать программу, которая считывает из файла разделенные пробелом числа, игнорируя другие символы, и записывает их в динамическую...

Создание односвязного списка - C (СИ)
Доброй ночи. Пытался сделать эти задания, но во время написания впервые столкнулся с неоднозначными проблемами. Не могу для указателя узла...

Реализация односвязного списка - C (СИ)
Здравствуйте! Программа падает, судя по тестам, после команды list_clear, которая очищает все ячейки. struct List * list_create () // ok ...

Стек на основе односвязного списка - C (СИ)
Ребят, помогите пожалуйста! Ошибка в функции push. Только я не знаю как ее исправить. Я в отчаянии stack.h typedef struct GRAD { ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru