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

Нажмите для полного просмотра!
Динамические структуры данных: очереди и стеки, слайд №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;...
Описание слайда:
Создание очереди 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 =...
Описание слайда:
Удаление очереди 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;...
Описание слайда:
Помещение элемента в очередь 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 ==...
Описание слайда:
Изъятие элемента из очереди 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 – завершение программы,...
Описание слайда:
Пример Реализовать программу, которая в интерактивном режиме запрашивает у пользователя команду и выполняет ее. Команды: 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);...
Описание слайда:
Программа 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;...
Описание слайда:
Связанное хранение Типы и переменные: 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...
Описание слайда:
Создание и удаление очереди 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;...
Описание слайда:
Помещение элемента в очередь 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 =...
Описание слайда:
Изъятие элемента из очереди 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;...
Описание слайда:
Создание стека 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 – завершение программы,...
Описание слайда:
Пример Реализовать программу, которая в интерактивном режиме запрашивает у пользователя команду и выполняет ее. Команды: 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);...
Описание слайда:
Программа 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 =...
Описание слайда:
Создание и удаление стека 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;...
Описание слайда:
Помещение элемента в стек 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;...
Описание слайда:
Изъятие элемента из стека 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
Загрузить презентацию