数据结构-栈和队列

来源:互联网 发布: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
原创粉丝点击