Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа1

.CPP
Скачиваний:
12
Добавлен:
01.05.2014
Размер:
2.47 Кб
Скачать
#include <stdio.h>
#include <malloc.h>
#include <process.h>
#include <conio.h>

struct Listob
{int info;
 Listob *next, *prev;
};

struct List
{Listob *start;
 Listob *end;
};

void store(List &lst, int elem)
{Listob *ob=(Listob *)malloc(sizeof(Listob));
  if(!ob) {puts (" ЌҐ¤®бв в®з­® Ї ¬пвЁ");
	   exit (1);  }
  ob->info=elem;
  ob->next=NULL;
  if(lst.start==NULL)
    {ob->prev=NULL;
     lst.start=ob;
     lst.end=ob;     }
   else
    {ob->prev=lst.end;
    lst.end->next=ob;
    lst.end=ob;      }
}

void print(List lst)
{Listob *x;
 printf("\n‘®¤Ґа¦Ё¬®Ґ бЇЁбЄ :");
 if (lst.start==NULL)
    {printf("\n‘ЇЁб®Є Їгбв");  return;};
 printf("\n[");
 for(x=lst.start; x!=NULL; x=x->next)
   printf("%d ", x->info);
 printf("]\n");
}

void deletelast(List &lst)
{Listob *x;
 if (lst.end==NULL)
    {printf("\n‘ЇЁб®Є Їгбв");  return;};
 x=lst.end;
 if(lst.end->prev==NULL)
  {lst.start=NULL;
   lst.end=NULL;    }
 else
  {lst.end=lst.end->prev;
   lst.end->next=NULL;  }
 free(x);
}

void insert(List &lst, int elem, int n)
 {int i;
  Listob *x,*ob;
   x=lst.start;
  for (i=1;i<n;i++)
  x=x->next;
  if(x==NULL)
    { store(lst, elem); return;}
  ob=(Listob *)malloc(sizeof(Listob));
  if(!ob) {puts (" ЌҐ¤®бв в®з­® Ї ¬пвЁ");
	   exit(1); }
  ob->info=elem;
  if(x==lst.start)
    {ob->next=lst.start;
     lst.start->prev=ob;
     lst.start=ob;}
   else
    {ob->next=x;
     ob->prev=x->prev;
     (x->prev)->next=ob;
     x->prev=ob; }
}

void clear(List &lst)
{Listob *x, *y;
 for(x=lst.start; x; )
  {y=x->next;
   free(x);
   x=y;
  }
 lst.start=lst.end=NULL;
}

void main(void)
{int i,n,count,element;
 List  lst;
 lst.start=lst.end=NULL;
 clrscr();
 printf("\nP Ў®в  б бЇЁбЄ®¬ \n");
 printf("\n‡ Ї®«­Ґ­ЁҐ бЇЁбЄ . ‚ўҐ¤ЁвҐ зЁб«® н«Ґ¬Ґ­в®ў: ");
 scanf("%d", &count);

 for(i=0; i<count; i++)
  {printf("‚ўҐ¤ЁвҐ %d-© н«Ґ¬Ґ­в бЇЁбЄ : ", i+1);
   scanf("%d", &element);
   store( lst, element); }
 print(lst);

 printf("\n“¤ «Ґ­ЁҐ ваҐе Ї®б«Ґ¤­Ёе н«Ґ¬Ґ­в®ў:");
 for (i=0;i<3;i++)
 deletelast(lst);
 print(lst);

 printf("\n‚бв ўЄ  н«Ґ¬Ґ­в  ў Ї®§ЁжЁо б § ¤ ­­л¬ ­®¬Ґа®¬ ");
 printf("\n‚ўҐ¤ЁвҐ ­®¬Ґа Ї®§ЁжЁЁ: ");
 scanf("%d", &n);
 while(n<=0)
  {printf("%d-© Ї®§ЁжЁп ­Ґ бгйҐбвўгв. ‚ўҐ¤ЁвҐ ¤агЈ®Ґ зЁб«®: ",n);
   scanf("%d", &n);   }
 printf("‚ўҐ¤ЁвҐ н«Ґ¬Ґ­в: ");
 scanf("%d", &element);
 insert(lst,element,n);
 print(lst);

 clear(lst);
}