数据结构.循环队列(C语言实现)
2013-10-01 15:00
791 查看
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define Status int
#define OK 1
#define ERROR 0
#define QElemtype int
#define MAXSIZE 100
typedef struct {
QElemtype *base;
int front;
int rear;
}SqQueue;
/************************************
****** initialize cycle queue
*************************************/
Status InitQueue(SqQueue *Q)
{
Q->base =(QElemtype *)malloc(sizeof(QElemtype) * sizeof(QElemtype));
if (! Q->front)
return ERROR;
Q->front = Q->rear = 0;
return OK;
}
/*************************************
**** QueueLength ************
***************************************/
int Queuelength(SqQueue Q)
{
return (Q.rear - Q.front + MAXSIZE) % MAXSIZE;
}
/*************************************
**** QueueLength ************
***************************************/
void PrintQueue(SqQueue *Q)
{
QElemtype *a = Q->base;
int front = Q->front;
int rear = Q->rear;
while (front != rear)
{
printf("%d\t\n",a[front]);
front++;
}
printf("\n");
}
/*************************************
**** EnQueue ************
***************************************/
Status EnQueue(SqQueue *Q, QElemtype e)
{
if ((Q->rear+1) % MAXSIZE ==Q->front) //cycle Queue is full
return ERROR;
Q->base[Q->rear] = e;
Q->rear = (Q->rear + 1) % MAXSIZE;
return OK;
}
/*************************************
**** DeQueue ************
***************************************/
Status DeQueue(SqQueue *Q, QElemtype e)
{
if (Q->front == Q->rear)
return ERROR;
e = Q->base[Q->front];
printf("deleted %d\n",e);
sleep(1);
Q->front = (Q->front +1) % MAXSIZE;
return OK;
}
int main(void)
{
SqQueue S;
printf("main-begin %p\n",S.base);
InitQueue(&S);
int i = 0;
for(; i < 10; ++i)
{
EnQueue(&S, i);
}
PrintQueue(&S);
for(i=0; i < 5; ++i)
DeQueue(&S,i);
printf("main-end %p\n",S.base);
//free(S.base);
printf("main-end-after free %p\n",S.base);
return OK;
}
#include<stdlib.h>
#include<malloc.h>
#define Status int
#define OK 1
#define ERROR 0
#define QElemtype int
#define MAXSIZE 100
typedef struct {
QElemtype *base;
int front;
int rear;
}SqQueue;
/************************************
****** initialize cycle queue
*************************************/
Status InitQueue(SqQueue *Q)
{
Q->base =(QElemtype *)malloc(sizeof(QElemtype) * sizeof(QElemtype));
if (! Q->front)
return ERROR;
Q->front = Q->rear = 0;
return OK;
}
/*************************************
**** QueueLength ************
***************************************/
int Queuelength(SqQueue Q)
{
return (Q.rear - Q.front + MAXSIZE) % MAXSIZE;
}
/*************************************
**** QueueLength ************
***************************************/
void PrintQueue(SqQueue *Q)
{
QElemtype *a = Q->base;
int front = Q->front;
int rear = Q->rear;
while (front != rear)
{
printf("%d\t\n",a[front]);
front++;
}
printf("\n");
}
/*************************************
**** EnQueue ************
***************************************/
Status EnQueue(SqQueue *Q, QElemtype e)
{
if ((Q->rear+1) % MAXSIZE ==Q->front) //cycle Queue is full
return ERROR;
Q->base[Q->rear] = e;
Q->rear = (Q->rear + 1) % MAXSIZE;
return OK;
}
/*************************************
**** DeQueue ************
***************************************/
Status DeQueue(SqQueue *Q, QElemtype e)
{
if (Q->front == Q->rear)
return ERROR;
e = Q->base[Q->front];
printf("deleted %d\n",e);
sleep(1);
Q->front = (Q->front +1) % MAXSIZE;
return OK;
}
int main(void)
{
SqQueue S;
printf("main-begin %p\n",S.base);
InitQueue(&S);
int i = 0;
for(; i < 10; ++i)
{
EnQueue(&S, i);
}
PrintQueue(&S);
for(i=0; i < 5; ++i)
DeQueue(&S,i);
printf("main-end %p\n",S.base);
//free(S.base);
printf("main-end-after free %p\n",S.base);
return OK;
}
相关文章推荐
- 数据结构基础之循环队列C语言实现
- 五、数据结构基础之循环队列C语言实现
- 数据结构之循环队列c语言实现
- 数据结构之---C语言实现循环队列
- 数据结构基础(5)--C语言实现循环队列--静态
- 数据结构(循环队列子系统:c实现)
- 软件设计师教程 数据结构之循环队列的实现 (C/C++语言)
- 用C语言实现简单循环队列结构
- 数据结构之循环队列(面向对象思想c++实现)
- C# 数据结构基础-实现循环队列
- 数据结构之队列的实现(c语言)
- 数据结构与C语言实现(二)——堆栈和队列
- C++数据结构之实现循环顺序队列
- 数据结构(严蔚敏)之六——链式队列c语言实现
- 数据结构之循环队列(顺序表存储)——C++模板类实现
- 数据结构基础——循环队列的C++实现
- 数据结构 利用循环队列层次遍历一棵二叉树 递归实现
- 数据结构(C实现)------- 顺序队列(循环队列之少用一个存储空间实现) .
- 数据结构——队列(C语言实现)
- 数据结构之队列11循环队列定义及实现