//Создать двунаправленный список - дэк,
//вывести его на печать в 2 направлениях.
//Определить отрицательные элементы и  их количество,
//если нет - выдать сообщение
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

struct elem{
    int num;
    elem *next;
    elem *pred;
    };

    elem *first, *cur, *tmp, *last;
    char snum[10];

 int main()
 { int n,k;
  puts("Input integer value or ENTER");
  first=new elem;
  puts("");
  gets(snum);
  first->num=atoi(snum);
  first->next=NULL;
  first->pred=NULL;
  last=first;
  k=1;
   while(gets(snum),strlen(snum)!=0)
   {  cur=new elem;
        k++;
        cur->num=atoi(snum);
     if(k%2==0) // Может быть любое условие
     {cur->next=first;
      first->pred=cur;
      cur->pred=NULL;
      first=cur;
     }
     else
     {cur->next=NULL;
      cur->pred=last;
      last->next=cur;
      last=cur;
     }
   }
  puts("-----------inputed spisok first -> last----------\n-");
  cur=first;
  while(cur!=NULL)
  {printf("%5d",cur->num);
  cur=cur->next;}
  printf("\n");
  cur=last;
 puts("-----------inputed spisok last -> first-----------\n");
   while(cur!=NULL)
  {printf("%5d",cur->num);
  cur=cur->pred;}
  printf("\n");
// Поиск отрицательных элементов
  k=0; // Счетчик элементов < 0
  cur=first;
  puts("------elementy <0 --------\n");
  while(cur!=NULL)
  {
      if (cur->num<0)
          {k++;
       printf("%5d",cur->num);
     }
     cur=cur->next;
  }
  if(k!=0)
      printf("\nV spiske %5d otricatelnyx elementov\n",k);
  else puts ("\nV spiske otricatelnyx elementov net");
 puts("\n-------Delete spisok----------");
  cur=first;
  while(first!=NULL)
  {  cur=first;
    first=first->next;
    delete cur;
   }
  cur=last=NULL;
    getch();
}
