int endelement= endq->inf;
while (begq->inf != endelement) addel(getdelel());
addel(temp);
break;
}
case 3:
{
//в) удалить из очереди первых три объекта. Распечатать очередь.
for (i=0;i<2;i++) getdelel();
break;
}
case 4: exit(0); break;
default: exit(0);
}
printf("\nnew spisok\n");
output(begq);
cerr<<" ";
getch();
}
}
/*
struct cell* input(void)
{
struct cell *p;
p=(struct cell *)malloc(sizeof(struct cell));
printf("Sign=");
scanf("%s",& p->sign);
printf("Weight=");
scanf("%d",& p->weight);
if(p->weight==0)
{
free(p);
return NULL;
}
p->pc=input();
return p;
}
Задача 4
Создать связанный числовой список типа стек из 5 объектов. Распечатать его. Выполнить следующие операции со связанным списком:
а) добавить два новых объекта в стек. Распечатать стек;
б) поменять местами первый и последний объект в стека. Распечатать стек;
в) удалить из стека первых три объекта. Распечатать стек.
15
/*
struct list
{
int value;
struct list *next;
};
list *hear=NULL;
int count=0;
//void show
void show(struct cell *p)
{
if (p==NULL)
{
printf("\nEND");
return;
}
printf("\nadress=%p\tvalue=%d",p,p->value);
output(p->pc);
}
void add_head (long value)
{
count++;
list *old_head=head;
head=(struct list *)malloc(sizeof(struct list));
head->next=old_old_head;
head->value=value;
}
void insert (int pos,long value)
{
list *target;
list *old_next;
int i=0;
if(head!=NULL)
{
target=head;
while((i<pos)&&(target!=NULL))
{
target=target->next;
i++;
}
if(i!=pos) return;
old_next=target->next;
target=target->next=(struct list *)malloc(sizeof(struct list));
target->value=value;
target->next=old_next;
count+;
}
else
{
target=head=(struct list *)malloc(sizeof(struct list));
target->next=NULL;
target->value=value;
count+;
}
}
void delete_any (int pos)
{
if(pos<0) return;
list *previous;
int i=0;
if(head!=NULL)
{
if(pos==0)
{
list *next_item=head->next;
free(head);
head=next_item;
}
else
{
previous=head;
pos--;
while((i<pos)&&(previous!=NULL))
{
previous=previous->next;
i++;
}
if(i!=pos) return;
list *next_item=previous->next->next;
free(previous->next);
previous->next=next_item;
}
}
*/
16