循环队列和链表队列代码
来源:互联网 发布:杭州数据资源管理局 编辑:程序博客网 时间:2024/06/04 23:34
链表实现的队列
/***********************************************
*file : queue_link.h
************************************************/
#ifndef QUEUE_LINK_H_
#define QUEUE_LINK_H_
#include "ringQueue.h"
#include <string.h>
typedef unsigned char element_t;
typedef struct node
{
element_t data;
node *next;
}node_t;
typedef struct lqueue
{
node_t *rear;
node_t *front;
}queue_link_t;
void init_queue_link(queue_link_t* que);
int read_queue_link(queue_link_t* ptrQue, element_t *elemt);
int write_queue_link(queue_link_t* ptrQue, element_t elmt);
#endif
/***********************************************
*file : queue_link.c
************************************************/
#include "queue_link.h"
void init_queue_link(queue_link_t* que)
{
que->front = NULL;
que->rear = NULL;
}
int read_queue_link(queue_link_t* ptrQue, element_t *elemt)
{
node_t *cell;
queue_link_t *pQue = ptrQue;
if(pQue->front == NULL){
printf("Queue is empty\r\n");
return -1;
}
cell = pQue->front;
if(pQue->front == pQue->rear)
pQue->front = pQue->rear = NULL;
else
pQue->front = pQue->front->next;
elemt = cell->data;
free(cell);
return 1;
}
int write_queue_link(queue_link_t* ptrQue, element_t elmt)
{
queue_link_t *pQue = ptrQue;
node_t *cell;
cell = (node_t*)malloc(sizeof(node_t));
cell->next = NULL;
memcpy(&(cell->data), &elmt, sizeof(element_t));
if(pQue->front == NULL)
{
pQue->front = cell;
}
else
pQue->rear->next = cell;
pQue->rear = cell;
return sizeof(element_t);
}
数组实现的队列
/***********************************************
*file : queue_ring.h
************************************************/
#ifndef __RINGQUEUE_H__#define __RINGQUEUE_H__
#ifdef __cplusplus
extern "C"
{
#endif
#define MAXSZ 256
typedef struct elementType
{
unsigned char dat;
}elementType_t;
typedef struct ringQueue
{
unsigned char dat[MAXSZ];//elementType_t dat[MAXSZ];
int rear;
int front;
}ringQueue_t;
void init_queue_ring(ringQueue_t *ptrQue);
void write_queue_ring(ringQueue_t *ptrQue,unsigned char item);
int read_queue_ring(ringQueue_t *ptrQue,unsigned char *dat);
#ifdef __cplusplus
}
#endif
#endif
/***********************************************
*file : queue_ring.c
************************************************/
#include "queue_ring.h"#include <string.h>
void init_queue_ring(ringQueue_t *ptrQue)
{
ptrQue->front = 0;
ptrQue->rear = 0;
//memset(ptrQue->dat,0,sizeof(ptrQue->dat));
}
void write_queue_ring(ringQueue_t *ptrQue,unsigned char item)
{
if((ptrQue->rear+1)%MAXSZ == ptrQue->front)
{
//printf("queue full\n");
return;
}
//printf("put is %d\n", item);
ptrQue->rear = (ptrQue->rear+1)%MAXSZ;
ptrQue->dat[ptrQue->rear] = item;
}
int read_queue_ring(ringQueue_t *ptrQue,unsigned char *dat)
{
if(ptrQue->front == ptrQue->rear)
{
//printf("queue empty\n");
return -1;
}
else
{
ptrQue->front = (ptrQue->front+1)%MAXSZ;
*dat = ptrQue->dat[ptrQue->front];
//printf("get is %d\n",*buf);
return 1;
}
}
- 循环队列和链表队列代码
- 循环队列和链队列
- 循环队列和链队列
- 循环队列和队列
- 队列和循环队列
- 队列和循环队列
- 顺序队列(循环队列)和链队列的C代码实现
- 关于队列(数组队列,链表队列,循环队列)
- 队列-循环队列/链队列
- 队列,链队列,循环队列
- 队列,链队列,循环队列
- 循环链表队列
- 实验四:顺序队列(循环队列)和链队列
- 单链表、链表队列、循环队列、栈
- 循环队列的代码
- 循环队列操作代码
- 数据结构-【队列】链式队列和循环队列
- 队列---循环队列与链队列比较
- spring aop(五)--ProxyFactoryBean创建代理的实现
- Android 源代码中增加新apk
- 回忆一下带学生工作室时的一些趣事
- 螺旋方阵(20)
- spring aop(六)--代理调用机制
- 循环队列和链表队列代码
- 入门学习duilib的要点
- ActiveMQ入门实例
- Android架构师之路-UML图形思考
- Ubuntu14.04下快速开发QT应用程序
- Vmware虚拟机进入BIOS方法
- c language data knowlege
- hdu 3065 病毒侵袭持续中
- ui