数据结构-栈和队列
来源:互联网 发布:win域名 编辑:程序博客网 时间:2024/05/19 10:12
1、栈和队列的概念
栈:按照后进先出的顺序(LIFO)存储和检索数据的高级数据结构。
队列:按照先进先出的顺序(FIFO)存储和检索数据的高级数据结构。
2、栈和队列的一些应用:信号量、事件处理、生产者-消费者问题、C中的函数调用。
3、栈和队列的代码实现
(1)栈的实现
/*stack.h*/#ifndef STACK_H#define STACK_H#include<stdlib.h>#include "list.h"/*Implement stacks as linked lists*/typedef List Stack;/*public interface*/#define stack_init list_init#define stack_destory list_destoryint stack_push(Stack *stack,const void *data);int stack_pop(Stack *stack,void **data);#definestack_peek(stack)((stack)->head==NULL?NULL:(stack)->head->data)#define stack_size list_size#endif
/*stack.c*/#include<stdlib.h>#include "list.h"#include "stack.h"/*stack_push*/int stack_push(Stack *stack,const void *data){/*push the data onto the stack*/return list_ins_next(stack,NULL,data);}/*stack_pop*/int stack_pop(Stack *stack,void **data){/*pop the data off the stack*/return list_rem_next(stack,NULL,data);}
应用实例:
后续补上。。。
(2)队列的实现
/*queue.h*/#ifndef QUEUE_H#define QUEUE_H#include<stdlib.h>#include "list.h"/*implement queues as linked lists*/typedef List Queue;/*public interface*/#define queue_init list_init#define queue_destory list_destoryint queue_enqueue(Queue *queue,const void *data);int queue_dequeue(Queue *queue,const void *data); #definequeue_peek(queue)((queue)->head==NULL?NULL:(queue)->head->data)#define queue_size list_size#endif
/*queue.c*/#include <stdlib.h>#include "list.h"#include "queue.h"/*queue_enqueue*/int queue_enqueue( Queue* queue,const void *data ){/*enqueue the data*/return list_ins_next(queue,list_tail(queue),data);}/*queue_dequeue*/int queue_dequeue(Queue *queue,void **data){/*dequeue the data*/return list_rem_next(queue,NULL,data);}
应用实例:
后续补上。。。
0 0
- 数据结构-栈和队列
- 数据结构-栈和队列
- 数据结构--栈和队列
- 数据结构-栈和队列
- 数据结构-栈和队列
- 数据结构 栈和队列
- 数据结构-栈和队列
- 数据结构-栈和队列
- 数据结构-栈和队列
- 数据结构:栈和队列
- 数据结构-栈和队列
- 数据结构--栈和队列
- 【数据结构】队列和栈
- 数据结构--栈和队列
- 【数据结构】-栈和队列
- 数据结构 栈和队列
- 数据结构-栈和队列
- 【数据结构】栈和队列
- Camera服务之--JNI部分
- js获取上传文件的绝对路径
- 第七次算法作业
- Camera服务之--App
- HDU1032--The 3n + 1 problem
- 数据结构-栈和队列
- (leetcode 1)Reverse Words in a String
- 第七周作业1-背包问题
- java中static{}语句块详解
- C++ Primer笔记10_运算符重载_赋值运算符_输入/输出运算符
- java 传参
- Handler有何作用?如何使用?
- C语言编程调试:illegal use of this type as an expression错误解决办法
- QT 鼠标右键菜单