fork download
  1. //(c)Terminator
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <malloc.h>
  5.  
  6.  
  7. struct info {
  8. int day, month, year;
  9. };
  10.  
  11. struct info info_set(int day, int month, int year){
  12. struct info inf;
  13. inf.day = day;
  14. inf.month = month;
  15. inf.year = year;
  16. return inf;
  17. }
  18.  
  19.  
  20. struct der {
  21. struct info inf;
  22. int n;
  23. struct der* l;
  24. struct der* r;
  25. };
  26.  
  27. int der_add(struct der** tr, struct info inf, int n);
  28. void der_print(FILE* hout, struct der* tr);
  29. void der_clear(struct der* tr);
  30.  
  31.  
  32.  
  33. int main(void){
  34. int i;
  35. struct der* t = NULL;
  36.  
  37. for(i = 0; i < 20; ++i)
  38. der_add(&t, info_set(rand()%29, rand()%12, 2012+(rand()%3)), rand()%50);
  39.  
  40. der_print(stdout, t);
  41. der_clear(t);
  42. return 0;
  43. }
  44.  
  45.  
  46. //добавление
  47. int der_add(struct der** tr, struct info inf, int n){
  48. struct der* p = *tr;
  49.  
  50. while(p != NULL){
  51. if(n < p->n) {
  52. tr = &p->l;
  53. p = p->l;
  54. } else if(n > p->n){
  55. tr = &p->r;
  56. p = p->r;
  57. } else
  58. return 0;
  59. }
  60.  
  61. p = (struct der*)malloc(sizeof(struct der));
  62. if(p != NULL){
  63. p->inf = inf;
  64. p->n = n;
  65. p->l = p->r = NULL;
  66. *tr = p;
  67. }
  68. return (p != NULL);
  69. }
  70.  
  71.  
  72. //печать
  73. void der_print(FILE* hout, struct der* tr){
  74. if(tr != NULL){
  75. if(tr->l != NULL)
  76. der_print(hout, tr->l);
  77.  
  78. fprintf(hout, "n: %d\tdate: %02d.%02d.%d\n",
  79. tr->n, tr->inf.day, tr->inf.month, tr->inf.year);
  80.  
  81. if(tr->r != NULL)
  82. der_print(hout, tr->r);
  83. }
  84. }
  85.  
  86. //чистка
  87. void der_clear(struct der* tr){
  88. if(tr != NULL){
  89. if(tr->l != NULL)
  90. der_clear(tr->l);
  91. if(tr->r != NULL)
  92. der_clear(tr->r);
  93. free(tr);
  94. }
  95. }
Success #stdin #stdout 0s 2380KB
stdin
Standard input is empty
stdout
n: 5	date: 14.08.2012
n: 11	date: 20.03.2014
n: 12	date: 01.04.2014
n: 13	date: 00.00.2014
n: 15	date: 11.05.2012
n: 17	date: 16.05.2013
n: 22	date: 21.05.2012
n: 29	date: 09.09.2012
n: 32	date: 01.02.2014
n: 33	date: 25.09.2013
n: 34	date: 20.02.2013
n: 36	date: 00.10.2014
n: 40	date: 23.11.2013
n: 41	date: 19.08.2014
n: 43	date: 24.10.2013
n: 49	date: 18.02.2013