www.pudn.com > ezw_davis.rar > fifo.c
/* FIFO.C Simple implementation of a fifo in ANSI-C. This file is part of my Embedded Zerotree Wavelet Encoder Tutorial. (C) C. Valens,Created : 04/09/1999 Last update: 29/09/1999 */ #include "fifo.h" #include typedef struct __fifo_element { //建立一个fifo的数据链表 ezw_element data; //data中的值是x,y坐标和(x,y)的值 struct __fifo_element *previous; } fifo_element; fifo_element *fifo_first = NULL; fifo_element *fifo_last = NULL; char fifo_empty = 1;//fifo空的标志 void put_in_fifo(ezw_element d)//将一个ezw_element元素放入fifo链表中 { fifo_element *p; p = malloc(sizeof(fifo_element));//申请一个新的空间 if (p!=NULL) { p->data = d; p->previous = NULL; if (fifo_last!=NULL) fifo_last->previous = p; fifo_last = p; if (fifo_first==NULL) fifo_first = p; fifo_empty = 0; } } ezw_element get_from_fifo(void)//从fifo中得到一个ezw_element元素 { ezw_element d; fifo_element *p; p = fifo_first; if (p!=NULL) { d = p->data; fifo_first = p->previous; free(p); } else { fifo_last = NULL; fifo_empty = 1; } return d; } void destroy_fifo(void)//清除整个fifo链表 { fifo_element *p; while (fifo_first!=NULL) { p = fifo_first; fifo_first = p->previous; free(p); } fifo_last = NULL; fifo_empty = 1; } void initialize_fifo(void)//初始化fifo, //令fifo_first和fifo_last为NULL且fifo_empty为1 { fifo_first = NULL; fifo_last = NULL; fifo_empty = 1; }