C语言版队列(国外英语资料)
C语言版队列(国外英语资料)
/ /!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/ /
/ /
/ /注意事项:此文件内代码已经过充分测试,可放心使用,本代码涉及大量
/ /指针操作,为安全起见,此代码请勿擅自修改!!!
/ /
/ /编写人员:吴海东电子邮件:haidong2732@163.com 2012.10.12
/ /
/ /!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/ /
/ / --------------------------------------------------------------------
/ /关于队列使用例程
/ /
/ / / /以BUF1和BUF2为缓冲创建队列Q1 Q2
/无符号char [ 10 ];
/ / unsigned char BUF1 [ 10 ];//但也可是动态申请内存
/ / unsigned char BUF2 [ 10 ];
/ /
/队列Q1;
/ / CreateQueue(和Q1,buf1,10);/ /创建队列
// a = 199,b=0;
/ / queue_input(与第一季度,“123456”,6);//数据入队(字符串数据)
/ / queue_input(与Q1和sizeof(int),);/ /数据入队(整形数据,当然也可以支持其他类型,包括结构体)
/ / queue_outputto(与Q1,CH,6);//数据出队
/ / queue_outputto(与Q1,与B,sizeof(int));//结果B = 199
/ /
/ / queue_input(与第一季度,“123456”,6);//数据入队(字符串数据)
/ / / /获取队列指定位置数值(并非出队)
/ / unsigned char a queue_getat(与q1,2);/ /结果=“5”
/ /无符号字符b = queue_getat(与q2,0);/ /结果B =“D”
/ / --------------------------------------------------------------------
#则__queue_h__whd_2012_10_12__
#定义__queue_h__whd_2012_10_12__
/ / -----队列操作接口定义------------------------------
#定义QCreate CreateQueue /创建队列
#定义qinput queue_input /数据入队
#定义qoutput queue_outputto /数据出队
#定义qgetat queue_getat /获取队列指定位置数值
#定义qcleardata(PQ)queue_clear /清空队列
#定义QDestroy(PQ)qcreate(PQ,null,0)/销毁队列
#定义qgetdatasize queue_getdatasize /获取队列内数据量大小(字节)
#定义qgetsize queue_getsize /获取队列本身大小(字节)
#定义qgetfreesize queue_getfreesize /获取剩余空间大小(字节)
/ / -------------------------------------------------------
/ / -----队列数据类型定义------------------------------
/ /
/ /警告:结构体内部变量由接口函数内部维护
/ /使用过程中请勿显示调用内部变量!!!
typedef struct _queue_whd_
{
unsigned char * m_pstart;/ /队列内存起始地址
unsigned char * m_pend;/ /队列内存结束地址
unsigned char * m_pfront;/ /队首指针
unsigned char * m_prear;/ /队尾指针
unsigned int m_ndatasize;/ /数据
unsigned int m_nqueuesize;/ /队列大小
unsigned int m_busing;/ /线程互斥用(裸奔程序中用于中断互斥)
}队列;
/ / -------------------------------------------------------
/ /以buf为缓冲创建队列,大小为buf大小
虚空CreateQueue(队列* pqueue,void * buf,