🗊Презентация Динамические структуры данных: очереди и стеки

Нажмите для полного просмотра!
Динамические структуры данных: очереди и стеки, слайд №1Динамические структуры данных: очереди и стеки, слайд №2Динамические структуры данных: очереди и стеки, слайд №3Динамические структуры данных: очереди и стеки, слайд №4Динамические структуры данных: очереди и стеки, слайд №5Динамические структуры данных: очереди и стеки, слайд №6Динамические структуры данных: очереди и стеки, слайд №7Динамические структуры данных: очереди и стеки, слайд №8Динамические структуры данных: очереди и стеки, слайд №9Динамические структуры данных: очереди и стеки, слайд №10Динамические структуры данных: очереди и стеки, слайд №11Динамические структуры данных: очереди и стеки, слайд №12Динамические структуры данных: очереди и стеки, слайд №13Динамические структуры данных: очереди и стеки, слайд №14Динамические структуры данных: очереди и стеки, слайд №15Динамические структуры данных: очереди и стеки, слайд №16Динамические структуры данных: очереди и стеки, слайд №17Динамические структуры данных: очереди и стеки, слайд №18Динамические структуры данных: очереди и стеки, слайд №19Динамические структуры данных: очереди и стеки, слайд №20Динамические структуры данных: очереди и стеки, слайд №21Динамические структуры данных: очереди и стеки, слайд №22Динамические структуры данных: очереди и стеки, слайд №23Динамические структуры данных: очереди и стеки, слайд №24Динамические структуры данных: очереди и стеки, слайд №25

Содержание

Вы можете ознакомиться и скачать презентацию на тему Динамические структуры данных: очереди и стеки. Доклад-сообщение содержит 25 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Лекция 15
Динамические структуры данных: очереди и стеки
Описание слайда:
Лекция 15 Динамические структуры данных: очереди и стеки

Слайд 2





Очереди
Очередь – динамическая структура данных с упорядоченным    доступом   к   элементам, функционирующая по принципу FIFO. 
First
In
First
Out
Описание слайда:
Очереди Очередь – динамическая структура данных с упорядоченным доступом к элементам, функционирующая по принципу FIFO. First In First Out

Слайд 3





Последовательное хранение
Типы и переменные
typedef struct{
  TYPE *list;
  int size,count,head,tail;
} QUEUE;
Описание слайда:
Последовательное хранение Типы и переменные typedef struct{ TYPE *list; int size,count,head,tail; } QUEUE;

Слайд 4





Создание очереди
int Create(QUEUE *queue,int sz)
{
  queue->list = (TYPE*)calloc(sz,sizeof(TYPE));
  if(!queue->list) return 0;
  queue->size = sz;
  queue->count = queue->head = queue->tail = 0;
  return 1;
}
Описание слайда:
Создание очереди int Create(QUEUE *queue,int sz) { queue->list = (TYPE*)calloc(sz,sizeof(TYPE)); if(!queue->list) return 0; queue->size = sz; queue->count = queue->head = queue->tail = 0; return 1; }

Слайд 5





Удаление очереди
void Clear(QUEUE *queue)
{
  if(queue->list) free(queue->list);
  queue->list = NULL;
  queue->size = queue->count = 0;
  queue->head = queue->tail = 0;
}
Описание слайда:
Удаление очереди void Clear(QUEUE *queue) { if(queue->list) free(queue->list); queue->list = NULL; queue->size = queue->count = 0; queue->head = queue->tail = 0; }

Слайд 6





Помещение элемента в очередь
int Put(QUEUE *queue, TYPE val)
{
  if(queue->count == queue->size) return 0;
  queue->list[queue->tail++] = val;
  if(queue->tail == queue->size) queue->tail = 0;
  queue->count++;
  return 1;
}
Описание слайда:
Помещение элемента в очередь int Put(QUEUE *queue, TYPE val) { if(queue->count == queue->size) return 0; queue->list[queue->tail++] = val; if(queue->tail == queue->size) queue->tail = 0; queue->count++; return 1; }

Слайд 7





Изъятие элемента из очереди
int Get(QUEUE *queue, TYPE *val)
{
  if(queue->count == 0) return 0;
  *val = queue->list[queue->head++];
  if(queue->head == queue->size) queue->head = 0;
  queue->count--;
  return 1;
}
Описание слайда:
Изъятие элемента из очереди int Get(QUEUE *queue, TYPE *val) { if(queue->count == 0) return 0; *val = queue->list[queue->head++]; if(queue->head == queue->size) queue->head = 0; queue->count--; return 1; }

Слайд 8





Пример
Реализовать программу, которая в интерактивном режиме запрашивает у пользователя команду и выполняет ее.
Команды:
exit – завершение программы,
put N – помещение N в очередь,
get – изъять элемент из очереди и вывести его значение на экран.
Дополнительно программа должна выводить сообщения о невозможности выполнения операции
Описание слайда:
Пример Реализовать программу, которая в интерактивном режиме запрашивает у пользователя команду и выполняет ее. Команды: exit – завершение программы, put N – помещение N в очередь, get – изъять элемент из очереди и вывести его значение на экран. Дополнительно программа должна выводить сообщения о невозможности выполнения операции

Слайд 9





Программа
int main(int argc, char *argv[])
{
  QUEUE q;
  Create(&q,20);
  while(1){
    char cmd[21]; int value;
    printf(">: "); gets(cmd);
    if(strncmp(cmd,"exit",4)==0) break;
    if(strncmp(cmd,"put",3)==0){
      char *tail = NULL;
      value = strtol(&cmd[3],&tail,10);
      if(strlen(tail)==0){
          if(!Put(&q,value)) puts("Очередь заполнена!");
      } else puts("Некорректная команда"); 
    }else if(strcmp(cmd,"get")==0){
      if(Get(&q,&value)) printf("%d\n",value);
        else puts("Очередь пуста!");
    } else puts("Неизвестная команда!");
  }
  Clear(&q);
  return 0;
}
Описание слайда:
Программа int main(int argc, char *argv[]) { QUEUE q; Create(&q,20); while(1){ char cmd[21]; int value; printf(">: "); gets(cmd); if(strncmp(cmd,"exit",4)==0) break; if(strncmp(cmd,"put",3)==0){ char *tail = NULL; value = strtol(&cmd[3],&tail,10); if(strlen(tail)==0){ if(!Put(&q,value)) puts("Очередь заполнена!"); } else puts("Некорректная команда"); }else if(strcmp(cmd,"get")==0){ if(Get(&q,&value)) printf("%d\n",value); else puts("Очередь пуста!"); } else puts("Неизвестная команда!"); } Clear(&q); return 0; }

Слайд 10





Связанное хранение
Типы и переменные:
typedef struct _ELEMENT{
  TYPE value;
  struct _ELEMENT *next;
} ELEMENT;
typedef struct{
  ELEMENT *head, *tail;
}QUEUE;
Описание слайда:
Связанное хранение Типы и переменные: typedef struct _ELEMENT{ TYPE value; struct _ELEMENT *next; } ELEMENT; typedef struct{ ELEMENT *head, *tail; }QUEUE;

Слайд 11





Создание и удаление очереди
void Create(QUEUE *queue)
{
  queue->head = queue->tail = NULL;
}
void Clear(QUEUE *queue)
{
  while(queue->head){
    ELEMENT *tmp = queue->head;
    queue->head = tmp->next;
    free(tmp);
  }
  queue->tail = NULL;
}
Описание слайда:
Создание и удаление очереди void Create(QUEUE *queue) { queue->head = queue->tail = NULL; } void Clear(QUEUE *queue) { while(queue->head){ ELEMENT *tmp = queue->head; queue->head = tmp->next; free(tmp); } queue->tail = NULL; }

Слайд 12





Помещение элемента в очередь
int Put(QUEUE *queue, TYPE val)
{
  ELEMENT *tmp = (ELEMENT*)malloc(sizeof(ELEMENT));
  if(!tmp) return 0;
  tmp->next = NULL;
  tmp->value = val;
  if(queue->tail) queue->tail->next = tmp;
  queue->tail = tmp;
  if(!queue->head) queue->head = queue->tail;
  return 1;
}
Описание слайда:
Помещение элемента в очередь int Put(QUEUE *queue, TYPE val) { ELEMENT *tmp = (ELEMENT*)malloc(sizeof(ELEMENT)); if(!tmp) return 0; tmp->next = NULL; tmp->value = val; if(queue->tail) queue->tail->next = tmp; queue->tail = tmp; if(!queue->head) queue->head = queue->tail; return 1; }

Слайд 13





Изъятие элемента из очереди
int Get(QUEUE *queue, TYPE *val)
{
  if(!queue->head) return 0;
  ELEMENT *tmp = queue->head;
  queue->head = tmp->next;
  *val = tmp->value;
  free(tmp);
  if(!queue->head) queue->tail = NULL;
  return 1;
}
Описание слайда:
Изъятие элемента из очереди int Get(QUEUE *queue, TYPE *val) { if(!queue->head) return 0; ELEMENT *tmp = queue->head; queue->head = tmp->next; *val = tmp->value; free(tmp); if(!queue->head) queue->tail = NULL; return 1; }

Слайд 14





Стек
Стек – динамическая структура данных c упорядоченным доступом  к элементам, функционирующая по принципу LIFO.
Last
In
First
Out
Описание слайда:
Стек Стек – динамическая структура данных c упорядоченным доступом к элементам, функционирующая по принципу LIFO. Last In First Out

Слайд 15





Последовательное хранение
Типы и переменные:
typedef struct{
  TYPE *list;
  int size,head;
} STACK;
Описание слайда:
Последовательное хранение Типы и переменные: typedef struct{ TYPE *list; int size,head; } STACK;

Слайд 16





Создание стека
int Create(STACK *stack, int sz)
{
  stack->list = (TYPE*)calloc(sz,sizeof(TYPE));
  if(!stack->list) return 0;
  stack->head = -1;
  stack->size = sz;
  return 1;
}
Описание слайда:
Создание стека int Create(STACK *stack, int sz) { stack->list = (TYPE*)calloc(sz,sizeof(TYPE)); if(!stack->list) return 0; stack->head = -1; stack->size = sz; return 1; }

Слайд 17





Удаление стека
void Clear(STACK *stack)
{
  if(stack->list) free(stack->list);
  stack->list = NULL;
  stack->head = 0;
  stack->size = 0;
}
Описание слайда:
Удаление стека void Clear(STACK *stack) { if(stack->list) free(stack->list); stack->list = NULL; stack->head = 0; stack->size = 0; }

Слайд 18





Помещение элемента в стек
int Push(STACK *stack, TYPE val)
{
  if(stack->head == stack->size-1) return 0;
  stack->list[++stack->head] = val;
  return 1;
}
Описание слайда:
Помещение элемента в стек int Push(STACK *stack, TYPE val) { if(stack->head == stack->size-1) return 0; stack->list[++stack->head] = val; return 1; }

Слайд 19





Изъятие элемента из стека
int Pop(STACK *stack, TYPE *val)
{
  if(stack->head == -1) return 0;
  *val = stack->list[stack->head--];
  return 1;
}
Описание слайда:
Изъятие элемента из стека int Pop(STACK *stack, TYPE *val) { if(stack->head == -1) return 0; *val = stack->list[stack->head--]; return 1; }

Слайд 20





Пример
Реализовать программу, которая в интерактивном режиме запрашивает у пользователя команду и выполняет ее.
Команды:
exit – завершение программы,
push N – помещение N в стек,
pop – изъять элемент из стека и вывести его значение на экран.
Дополнительно программа должна выводить сообщения о невозможности выполнения операции
Описание слайда:
Пример Реализовать программу, которая в интерактивном режиме запрашивает у пользователя команду и выполняет ее. Команды: exit – завершение программы, push N – помещение N в стек, pop – изъять элемент из стека и вывести его значение на экран. Дополнительно программа должна выводить сообщения о невозможности выполнения операции

Слайд 21





Программа
int main(int argc, char *argv[])
{
  STACK q;
  Create(&q,20);
  while(1){
    char cmd[21]; int value;
    printf(">: "); gets(cmd);
    if(strncmp(cmd,"exit",4)==0) break;
    if(strncmp(cmd,"push",4)==0){
      char *tail = NULL;
      value = strtol(&cmd[4],&tail,10);
      if(strlen(tail)==0){
          if(!Push(&q,value)) puts("Стек заполнен!");
      } else puts("Некорректная команда"); 
    }else if(strcmp(cmd,"get")==0){
      if(Pop(&q,&value)) printf("%d\n",value);
        else puts("Стек пуст!");
    } else puts("Неизвестная команда!");
  }
  Clear(&q);
  return 0;
}
Описание слайда:
Программа int main(int argc, char *argv[]) { STACK q; Create(&q,20); while(1){ char cmd[21]; int value; printf(">: "); gets(cmd); if(strncmp(cmd,"exit",4)==0) break; if(strncmp(cmd,"push",4)==0){ char *tail = NULL; value = strtol(&cmd[4],&tail,10); if(strlen(tail)==0){ if(!Push(&q,value)) puts("Стек заполнен!"); } else puts("Некорректная команда"); }else if(strcmp(cmd,"get")==0){ if(Pop(&q,&value)) printf("%d\n",value); else puts("Стек пуст!"); } else puts("Неизвестная команда!"); } Clear(&q); return 0; }

Слайд 22





Связанное хранение
Типы и переменные:
typedef struct _ELEMENT{
  TYPE value;
  struct _ELEMENT *next;
} ELEMENT;
typedef ELEMENT* STACK;
Описание слайда:
Связанное хранение Типы и переменные: typedef struct _ELEMENT{ TYPE value; struct _ELEMENT *next; } ELEMENT; typedef ELEMENT* STACK;

Слайд 23





Создание и удаление стека
void Create(STACK *stack)
{
  *stack = NULL;
}
void Clear(STACK *stack)
{
  while(*stack){
    ELEMENT *tmp = *stack;
    *stack = tmp->next;
    free(tmp);
  }
}
Описание слайда:
Создание и удаление стека void Create(STACK *stack) { *stack = NULL; } void Clear(STACK *stack) { while(*stack){ ELEMENT *tmp = *stack; *stack = tmp->next; free(tmp); } }

Слайд 24





Помещение элемента в стек
int Push(STACK *stack, TYPE val)
{
  ELEMENT *tmp = (ELEMENT*)malloc(sizeof(ELEMENT));
  if(!tmp) return 0;
  tmp->next = *stack;
  tmp->value = val;
  *stack = tmp;
  return 1;
}
Описание слайда:
Помещение элемента в стек int Push(STACK *stack, TYPE val) { ELEMENT *tmp = (ELEMENT*)malloc(sizeof(ELEMENT)); if(!tmp) return 0; tmp->next = *stack; tmp->value = val; *stack = tmp; return 1; }

Слайд 25





Изъятие элемента из стека
int Pop(STACK *stack, TYPE *val)
{
  if(!*stack) return 0;
  ELEMENT *tmp = *stack;
  *stack = tmp->next;
  *val = tmp->value;
  free(tmp);
  return 1;
}
Описание слайда:
Изъятие элемента из стека int Pop(STACK *stack, TYPE *val) { if(!*stack) return 0; ELEMENT *tmp = *stack; *stack = tmp->next; *val = tmp->value; free(tmp); return 1; }



Похожие презентации
Mypresentation.ru
Загрузить презентацию