Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4.  
  5. struct DATE
  6. {
  7. int date = 0;
  8. DATE *next = NULL;
  9. DATE *prev = NULL;
  10. };
  11. DATE * addSTRUCT(int data)
  12. {
  13. DATE *item = (DATE*)malloc(sizeof(DATE));
  14. item->date = data;
  15. item->next = NULL;
  16. item->prev = NULL;
  17. return item;
  18. }
  19. void push(DATE **first, int data)
  20. {
  21. DATE *item = (DATE*)malloc(sizeof(DATE));
  22. item->date = data;
  23. item->next = *first;
  24. item->prev = NULL;
  25. (*first)->prev = item;
  26. *first = item;
  27. }
  28. void add_to_the_end(DATE **last, int data)
  29. {
  30. DATE *item = (DATE*)malloc(sizeof(DATE));
  31. item->date = data;
  32. item->next = NULL;
  33. item->prev = *last;
  34. (*last)->next = item;
  35. *last = item;
  36. }
  37. void add(DATE **data_pr, DATE **data_n, int data)
  38. {
  39. DATE *item = (DATE*)malloc(sizeof(DATE));
  40. item->date = data;
  41. item->prev = *data_pr;
  42. item->next = *data_n;
  43. (*data_n)->prev = item;
  44. (*data_pr)->next = item;
  45. }
  46. void pop(DATE **first)
  47. {
  48. DATE *item = (*first)->next;
  49. ((*first)->next)->prev = item;
  50. free(*first);
  51. *first = item;
  52. }
  53. void association(DATE **first, DATE **second) {
  54. do {
  55. DATE *tmp = (*first)->next;
  56. DATE *item = (*second)->next;
  57. (*first)->next = *second;
  58. ((*first)->next)->prev = *first;
  59. ((*first)->next)->next = tmp;
  60. tmp->prev = ((*first)->next)->next;
  61. *first = tmp;
  62. *second = item;
  63. } while ((*second)->next != NULL);
  64. }
  65.  
  66. DATE * gotoLast(DATE * d){
  67.  
  68. //функция нахождения последнего элемента в структуре
  69.  
  70. if (d->next != NULL){
  71. return gotoLast(d->next);
  72. }
  73. }
  74.  
  75. int saveDATE(DATE * d, char * s){
  76. //d - первый элемент
  77. //s - полный путь
  78.  
  79. FILE *fp;
  80.  
  81. fp = fopen(s, "w+");
  82.  
  83.  
  84.  
  85. DATE * tmp = (DATE *) malloc(sizeof(DATE));
  86. tmp = gotoLast(d);
  87.  
  88.  
  89. //записываем первый элемент который всегда существует
  90. printf("%i\n",d->date);
  91.  
  92. while (d->prev != NULL){
  93. // и предыдущие
  94. d = d->prev;
  95. printf("%i\n",d->date);
  96. }
  97. fclose(fp);
  98.  
  99. }
  100.  
  101. DATE * loadDATA(char * s){
  102.  
  103. //s - полный путь до файла
  104.  
  105. DATE * tmp = (DATE *) malloc(sizeof(DATE));
  106. DATE * tmp1 = (DATE *) malloc(sizeof(DATE));
  107. tmp->next = NULL;
  108. tmp->prev = NULL;
  109.  
  110. FILE *fp;
  111. fp = fopen(s, "r");
  112.  
  113. fscanf(fp, "%i", tmp->date);
  114.  
  115. while (fscanf(fp, "%i", tmp1->date) != EOF){
  116. //считываем строки пока нет конца файла
  117. tmp1->next = NULL;
  118. tmp->next = tmp1;
  119. tmp1->prev = tmp;
  120. tmp = tmp1;
  121. }
  122. return tmp;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement