Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int #include "stdafx.h"
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <stdio.h>
- using namespace std;
- struct date_t //Структура сравнения дат
- {
- int day;
- int month;
- int year;
- };
- struct persona // структура, описывающая объект односвязного списка
- {
- char *name; //Фамилия человека
- persona *next; //Указатель на следующий объект
- };
- int main()
- {
- /* Получение числа записей в файле */
- int n = 1;
- ifstream ifs("..\\input.txt");
- ifs >> n;
- /*
- * Сравнивает даты
- * Возвращает
- * 1, если date1 > date2
- * -1, если date1 < date2
- * 0, если date1 = date2
- */
- int compare(date_t* date1, date_t* date2);
- {
- if (date1->year > date2->year)
- {
- return 1;
- }
- else if (date1->year < date2->year)
- {
- return -1;
- }
- if (date1->month > date2->month)
- {
- return 1;
- }
- else if (date1->month < date2->month)
- {
- return -1;
- }
- if (date1->day > date2->day)
- {
- return 1;
- }
- else
- if (date1->day < date2->day)
- {
- return -1;
- }
- return 0;
- }
- /* Вставка в упорядоченный односвязный список. */
- void sls_store(struct persona *i, /* новый элемент */
- struct persona **start, /* начало списка */
- struct persona **last); /* конец списка */
- {
- struct persona *old, *p;
- p = *start;
- if (!*last)
- {
- /* первый элемент в списке */
- i->next = NULL;
- *last = i;
- *start = i;
- return;
- }
- old = NULL;
- while (p)
- {
- if (strcmp(p->date, i->date) < 0)
- {
- old = p;
- p = p->next;
- }
- else
- {
- if (old)
- { /* вставка в середину */
- old->next = i;
- i->next = p;
- return;
- }
- i->next = p; /* вставка в начало */
- *start = i;
- return;
- }
- }
- (*last)->next = i; /* вставка в конец */
- i->next = NULL;
- *last = i;
- void sldelete(
- struct persona *p, /* предыдущий элемент */
- struct persona*i, /* удаляемый элемент */
- struct persona**start, /* начало списка */
- struct persona**last); /* конец списка */
- {
- if (p) p->next = i->next;
- else *start = i->next;
- if (i == *last && p) *last = p;
- }
- }
- void print_persona(persona*first); //Прототип функции печати односвязного списка
- struct persona *search(struct persona *start, char *n);
- {
- while (start)
- {
- if (!strcmp(n, start->date)) return start;
- start = start->next;
- }
- return NULL; /* подходящий элемент не найден */
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement