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

Смотреть слайды в полном размере
Презентация «Динамические структуры данных: очереди и стеки»

Вы можете ознакомиться с презентацией онлайн, просмотреть текст и слайды к ней, а также, в случае, если она вам подходит - скачать файл для редактирования или печати. Документ содержит 25 слайдов и доступен в формате ppt. Размер файла: 94.50 KB

Просмотреть и скачать

Pic.1
Лекция 15 Динамические структуры данных: очереди и стеки
Лекция 15 Динамические структуры данных: очереди и стеки
Pic.2
Очереди Очередь – динамическая структура данных с упорядоченным доступом к элементам, функционирующа
Очереди Очередь – динамическая структура данных с упорядоченным доступом к элементам, функционирующая по принципу FIFO. First In First Out
Pic.3
Последовательное хранение Типы и переменные typedef struct{ TYPE *list; int size,count,head,tail; }
Последовательное хранение Типы и переменные typedef struct{ TYPE *list; int size,count,head,tail; } QUEUE;
Pic.4
Создание очереди int Create(QUEUE *queue,int sz) { queue->list = (TYPE*)calloc(sz,sizeof(TYPE));
Создание очереди 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 = …
Pic.5
Удаление очереди void Clear(QUEUE *queue) { if(queue->list) free(queue->list); queue->list
Удаление очереди void Clear(QUEUE *queue) { if(queue->list) free(queue->list); queue->list = NULL; queue->size = queue->count = 0; queue->head = queue->tail = 0; }
Pic.6
Помещение элемента в очередь int Put(QUEUE *queue, TYPE val) { if(queue->count == queue->size)
Помещение элемента в очередь int Put(QUEUE *queue, TYPE val) { if(queue->count == queue->size) return 0; queue->list[queue->tail++] = val; if(queue->tail == queue->size) …
Pic.7
Изъятие элемента из очереди int Get(QUEUE *queue, TYPE *val) { if(queue->count == 0) return 0; *v
Изъятие элемента из очереди 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; …
Pic.8
Пример Реализовать программу, которая в интерактивном режиме запрашивает у пользователя команду и вы
Пример Реализовать программу, которая в интерактивном режиме запрашивает у пользователя команду и выполняет ее. Команды: exit – завершение программы, put N – помещение N в очередь, get – изъять …
Pic.9
Программа int main(int argc, char *argv[]) { QUEUE q; Create(&q,20); while(1){ char cmd[21]; int
Программа 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; …
Pic.10
Связанное хранение Типы и переменные: typedef struct _ELEMENT{ TYPE value; struct _ELEMENT *next; }
Связанное хранение Типы и переменные: typedef struct _ELEMENT{ TYPE value; struct _ELEMENT *next; } ELEMENT; typedef struct{ ELEMENT *head, *tail; }QUEUE;
Pic.11
Создание и удаление очереди void Create(QUEUE *queue) { queue->head = queue->tail = NULL; } vo
Создание и удаление очереди void Create(QUEUE *queue) { queue->head = queue->tail = NULL; } void Clear(QUEUE *queue) { while(queue->head){ ELEMENT *tmp = queue->head; queue->head = …
Pic.12
Помещение элемента в очередь int Put(QUEUE *queue, TYPE val) { ELEMENT *tmp = (ELEMENT*)malloc(sizeo
Помещение элемента в очередь 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) …
Pic.13
Изъятие элемента из очереди int Get(QUEUE *queue, TYPE *val) { if(!queue->head) return 0; ELEMENT
Изъятие элемента из очереди int Get(QUEUE *queue, TYPE *val) { if(!queue->head) return 0; ELEMENT *tmp = queue->head; queue->head = tmp->next; *val = tmp->value; free(tmp); …
Pic.14
Стек Стек – динамическая структура данных c упорядоченным доступом к элементам, функционирующая по п
Стек Стек – динамическая структура данных c упорядоченным доступом к элементам, функционирующая по принципу LIFO. Last In First Out
Pic.15
Последовательное хранение Типы и переменные: typedef struct{ TYPE *list; int size,head; } STACK;
Последовательное хранение Типы и переменные: typedef struct{ TYPE *list; int size,head; } STACK;
Pic.16
Создание стека int Create(STACK *stack, int sz) { stack->list = (TYPE*)calloc(sz,sizeof(TYPE)); i
Создание стека 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; }
Pic.17
Удаление стека void Clear(STACK *stack) { if(stack->list) free(stack->list); stack->list =
Удаление стека void Clear(STACK *stack) { if(stack->list) free(stack->list); stack->list = NULL; stack->head = 0; stack->size = 0; }
Pic.18
Помещение элемента в стек int Push(STACK *stack, TYPE val) { if(stack->head == stack->size-1)
Помещение элемента в стек int Push(STACK *stack, TYPE val) { if(stack->head == stack->size-1) return 0; stack->list[++stack->head] = val; return 1; }
Pic.19
Изъятие элемента из стека int Pop(STACK *stack, TYPE *val) { if(stack->head == -1) return 0; *val
Изъятие элемента из стека int Pop(STACK *stack, TYPE *val) { if(stack->head == -1) return 0; *val = stack->list[stack->head--]; return 1; }
Pic.20
Пример Реализовать программу, которая в интерактивном режиме запрашивает у пользователя команду и вы
Пример Реализовать программу, которая в интерактивном режиме запрашивает у пользователя команду и выполняет ее. Команды: exit – завершение программы, push N – помещение N в стек, pop – изъять элемент …
Pic.21
Программа int main(int argc, char *argv[]) { STACK q; Create(&q,20); while(1){ char cmd[21]; int
Программа 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; …
Pic.22
Связанное хранение Типы и переменные: typedef struct _ELEMENT{ TYPE value; struct _ELEMENT *next; }
Связанное хранение Типы и переменные: typedef struct _ELEMENT{ TYPE value; struct _ELEMENT *next; } ELEMENT; typedef ELEMENT* STACK;
Pic.23
Создание и удаление стека void Create(STACK *stack) { *stack = NULL; } void Clear(STACK *stack) { wh
Создание и удаление стека void Create(STACK *stack) { *stack = NULL; } void Clear(STACK *stack) { while(*stack){ ELEMENT *tmp = *stack; *stack = tmp->next; free(tmp); } }
Pic.24
Помещение элемента в стек int Push(STACK *stack, TYPE val) { ELEMENT *tmp = (ELEMENT*)malloc(sizeof(
Помещение элемента в стек 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; }
Pic.25
Изъятие элемента из стека int Pop(STACK *stack, TYPE *val) { if(!*stack) return 0; ELEMENT *tmp = *s
Изъятие элемента из стека int Pop(STACK *stack, TYPE *val) { if(!*stack) return 0; ELEMENT *tmp = *stack; *stack = tmp->next; *val = tmp->value; free(tmp); return 1; }


Скачать презентацию

Если вам понравился сайт и размещенные на нем материалы, пожалуйста, не забывайте поделиться этой страничкой в социальных сетях и с друзьями! Спасибо!