fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. struct spis
  5. {char data[20];
  6. struct spis *v1;
  7. struct spis *v2;
  8.  
  9. };
  10. void create(void); //создание списка
  11. void list(spis *); //просмотр списка
  12. void add(void); //добавление списка
  13. struct spis *head,*tail;
  14. int main()
  15. {
  16. int nom;
  17. create();
  18. add();
  19. printf("list head:\n");
  20. list(head);
  21. printf("list tail:\n");
  22. list(tail);
  23. printf("the end\n");
  24. return 0;
  25. }
  26.  
  27. void create(void)
  28. {spis *p,*pred;
  29. pred=NULL;
  30. p=(spis *)malloc(sizeof(spis));
  31. /*printf(":Данные ");*/ gets(p->data);
  32. p->v1=pred;
  33. if (pred != NULL)
  34. pred->v2=p;
  35. else
  36. head=p;
  37. pred=p;
  38. tail=p;
  39. tail->v2=NULL;
  40. }
  41. void add(void)
  42. {
  43. spis *p,*pn;
  44. //clrscr();
  45. pn=(spis *)malloc(sizeof(spis));
  46. //printf("Введите данные: ");
  47. gets(pn->data);
  48. p=tail;
  49. pn->v1=tail;
  50. pn->v2=NULL;
  51. p->v2=pn;
  52. tail=pn;
  53. }
  54.  
  55. void list(spis *p)
  56. {if (p==head)
  57. while (p != NULL)
  58. {puts(p->data);
  59. p=p->v2;
  60. }
  61. else if (p==tail)
  62. while ( p!= NULL)
  63. {
  64. printf("%s\n",p->data);
  65. p=p->v1;
  66. }
  67. else
  68. puts("Неверный адрес ");
  69. }
  70.  
Success #stdin #stdout 0s 3432KB
stdin
abc
xyz
stdout
list head:
abc
xyz
list tail:
xyz
abc
the end