Advertisement
Olya_Berestneva

double spisok

May 24th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.46 KB | None | 0 0
  1. // doublespisok.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6.  
  7. struct list
  8. {
  9.     int v;
  10.     list *next;
  11.     list *prev;
  12. };
  13.  
  14.  
  15. struct list * init(int a)  
  16. {
  17.     list *lst = (struct list*)malloc(sizeof(struct list));
  18.     lst->v = a;
  19.     lst->next = NULL;
  20.     lst->prev = NULL;
  21.     return(lst);
  22. }
  23.  
  24.  
  25. list *addelem(list *lst, int v)
  26. {
  27.     list *curr, *buff;
  28.     curr = (list*)malloc(sizeof(list));
  29.     buff = lst->next;
  30.     lst->next = curr;
  31.     curr->v = v;
  32.     curr->prev = lst;
  33.     curr->next = buff;
  34.     if (buff != NULL)
  35.         buff->prev = curr;
  36.     return(curr);
  37. }
  38.  
  39. struct list *deleteelem(list *lst)
  40. {
  41.     struct list *prev, *next;
  42.     prev = lst->prev;
  43.     next = lst->next;
  44.     if (prev != NULL)
  45.         prev->next = lst->next;
  46.     if (next != NULL)
  47.         next->prev = lst->prev;
  48.     free(lst);
  49.     return(prev);
  50. }
  51. void listprint(list *lst)
  52. {
  53.     struct list *curr;
  54.     curr = lst;
  55.     do {
  56.         printf("%d ", curr->v);
  57.         curr = curr->next;
  58.     } while (curr != NULL);
  59.     printf("\n");
  60. }
  61.  
  62.  
  63. void olistprint(list *lst)
  64. {
  65.     struct list *curr;
  66.     curr = lst;
  67.     while (curr->next != NULL)
  68.         curr = curr->next;
  69.     do
  70.     {
  71.         printf("%d ", curr->v);
  72.         curr = curr->prev;
  73.     } while (curr != NULL);
  74.     printf("\n");
  75. }
  76.  
  77. int main()
  78. {
  79.     list *p = NULL, *curr=NULL;
  80.     p = init(0);
  81.     curr = p;
  82.     for (int i = 1; i <10; i++) {
  83.         curr = addelem(curr, i);
  84.     }
  85.     listprint(p);
  86.     olistprint(p);
  87.     deleteelem(curr);
  88.     listprint(p);
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement