 
        
        
          Добавил:
          
          
        
        
    
            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;
}
