Advertisement
Guest User

Untitled

a guest
May 27th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. int #include "stdafx.h"
  2. #include <iostream>
  3. #include <fstream>
  4. #include <string>
  5. #include <stdio.h>
  6. using namespace std;
  7.  
  8. struct date_t //Структура сравнения дат
  9. {
  10. int day;
  11. int month;
  12. int year;
  13. };
  14.  
  15. struct persona // структура, описывающая объект односвязного списка
  16. {
  17. char *name; //Фамилия человека
  18. persona *next; //Указатель на следующий объект
  19. };
  20.  
  21. int main()
  22. {
  23. /* Получение числа записей в файле */
  24. int n = 1;
  25. ifstream ifs("..\\input.txt");
  26. ifs >> n;
  27.  
  28. /*
  29. * Сравнивает даты
  30. * Возвращает
  31. * 1, если date1 > date2
  32. * -1, если date1 < date2
  33. * 0, если date1 = date2
  34. */
  35. int compare(date_t* date1, date_t* date2);
  36. {
  37. if (date1->year > date2->year)
  38. {
  39. return 1;
  40. }
  41. else if (date1->year < date2->year)
  42. {
  43. return -1;
  44. }
  45.  
  46. if (date1->month > date2->month)
  47. {
  48. return 1;
  49. }
  50. else if (date1->month < date2->month)
  51. {
  52. return -1;
  53. }
  54.  
  55. if (date1->day > date2->day)
  56. {
  57. return 1;
  58. }
  59. else
  60. if (date1->day < date2->day)
  61. {
  62. return -1;
  63. }
  64.  
  65. return 0;
  66. }
  67. /* Вставка в упорядоченный односвязный список. */
  68. void sls_store(struct persona *i, /* новый элемент */
  69. struct persona **start, /* начало списка */
  70. struct persona **last); /* конец списка */
  71. {
  72. struct persona *old, *p;
  73.  
  74. p = *start;
  75.  
  76. if (!*last)
  77. {
  78. /* первый элемент в списке */
  79. i->next = NULL;
  80. *last = i;
  81. *start = i;
  82. return;
  83. }
  84.  
  85. old = NULL;
  86. while (p)
  87. {
  88. if (strcmp(p->date, i->date) < 0)
  89. {
  90. old = p;
  91. p = p->next;
  92. }
  93. else
  94. {
  95. if (old)
  96. { /* вставка в середину */
  97. old->next = i;
  98. i->next = p;
  99. return;
  100. }
  101. i->next = p; /* вставка в начало */
  102. *start = i;
  103. return;
  104. }
  105. }
  106. (*last)->next = i; /* вставка в конец */
  107. i->next = NULL;
  108. *last = i;
  109. void sldelete(
  110. struct persona *p, /* предыдущий элемент */
  111. struct persona*i, /* удаляемый элемент */
  112. struct persona**start, /* начало списка */
  113. struct persona**last); /* конец списка */
  114. {
  115. if (p) p->next = i->next;
  116. else *start = i->next;
  117.  
  118. if (i == *last && p) *last = p;
  119. }
  120. }
  121. void print_persona(persona*first); //Прототип функции печати односвязного списка
  122. struct persona *search(struct persona *start, char *n);
  123. {
  124. while (start)
  125. {
  126. if (!strcmp(n, start->date)) return start;
  127. start = start->next;
  128. }
  129. return NULL; /* подходящий элемент не найден */
  130. system("pause");
  131. return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement