# Написание операций работы с заданной структурой данных (динамической очередью) (Лабораторная работа № 2), страница 2

t=p;

}

else

{

t=new list;

t->inf=x;

t->next=p;

t->prev=p->prev;

p->prev->next=t;

p->prev=t;

}

return t;

}

list *EDel(list *p, int *x)

{

list *t;

*x=p->prev->inf;

if(p->next==p)

{

delete p;

p=NULL;

}

else

{

t=p->prev;

p->prev=t->prev;

t->prev->next=p;

delete t;

}

return p;

}

list *BDel(list *p, int *x)

{

list *t;

*x=p->inf;

if(p->next==p)

{

delete p;

p=NULL;

}

else

{

t=p;

p=p->next;

p->prev=t->prev;

t->prev->next=p;

delete t;

}

return p;

}

int Check (list *p)

{

if (p==NULL)

return 1;

else

return 0;

}

list *Clear(list *p)

{

list *t;

while(p->next!=p)

{

t=p;

p=p->next;

p->prev=t->prev;

t->prev->next=p;

delete t;

}

delete p;

p=NULL;

return p;

}

list* Show(list *p)

{

list *t,*h;

int x;

t=Create();

if (p==NULL)

printf("Empty\n");

else{

do

{

p=BDel(p,&x);

}

while(!Check(p));

h=t;

printf("%i ",h->inf);

while(h->next!=t){

h=h->next;

printf("%i ",h->inf);

}

}

printf("\n");

return t;

}

list *Create()

{

return NULL;

}

Модуль с основной подпрограммой(main):

#include <stdio.h>

#include <conio.h>

#include "queue.h"

void main()

{

int i,x;

list *line;

line=Create();

printf("Enter action:\n\t1.-Add to beginning\n\t2.-Add to end\n\t3.-Delete from beginning\n\t4.-Delete from end\n\t5.-Check empty\n\t6.-Clear deck\n\t0.-Exit\n");

scanf("%i",&i);

while(i)

{

switch(i)

{

case 1:

printf("x = ?\n");

scanf("%i",&x);

break;

case 2:

printf("x = ?\n");

scanf("%i",&x);

break;

case 3:

if(!Check(line))

{

line=BDel(line,&x);

printf("x = %i\n",x);

}

else

printf("impossible action!\n");

break;

case 4:

if(!Check(line))

{

line=EDel(line,&x);

printf("x = %i\n",x);

}

else

printf("impossible action!\n");

break;

case 5:

if(!Check(line))

printf("not empty\n");

else

printf("empty\n");

break;

case 6:

if(!Check(line))

line=Clear(line);

else printf("empty\n");

break;

default: printf("Unknown command: %i\n",i);

}

printf("\nEnter command(nuul to exit):  ");

scanf("%i",&i);

}

line=Show(line);

line=Show(line);

line=Show(line);

getch();

}