Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2K_programuvanna / Практика / 3_mod / 14_2
.c#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
typedef struct st { // элемент очереди
int info; // элемент хранения очереди
struct st *prev; // указатель на следующий элемент очереди
} QUEUE;
void add(QUEUE **head, QUEUE **tail, int item); // поместить item в очередь
int shift(QUEUE **head, QUEUE **tail);
int main(){
QUEUE *head = NULL, *tail = NULL;
int i,value;
clrscr();
for (i = 0; i< 3; i++){
printf("Vvedite element %d:", i);
scanf("%d",&value);
add(&tail,&head,value);
}
while (head){
printf("%d ",shift(&tail,&head));
}
return 0;
}
void add(QUEUE **tail, QUEUE **head, int item){ // поместить item в очередь
// создаем эллемент
QUEUE *new_item;
new_item = (QUEUE*)malloc(sizeof(QUEUE)); //выделяем память под новый элемент
new_item -> info = item; // присваиваем значение новому элементу
new_item -> prev = NULL;
// устанавливем связи
(**tail).prev = new_item; // присоединяем новый элемент на вершину
*tail = new_item;
if (*head==NULL){
*head = new_item;
}
}
int shift(QUEUE **tail, QUEUE **head){
QUEUE * element = *head;
int value = element->info;
*head = (**head).prev;
free(element);
if (*head==NULL){
*tail = NULL;
}
return value;
}