数据结构——基本数据结构之队列
2008-01-22 15:34
501 查看
循环队列
用一组抵制连续的存储单元依次存放从队头到队尾的元素
另外两个指针front和rear分别指示队列头元素和尾元素的位置
queue.h
#ifndef _QUEUE_H
#define _QUEUE_H
#define MaxQSize 100
typedef int ElemType;
typedef struct SqQueue...{
ElemType *base;
int front;
int rear;
}Queue;
int InitQueue(Queue **q);
int DestroyQueue(Queue **q);
int ClearQueue(Queue **q);
int QueueEmpty(Queue *q);
int QueueLength(Queue *q);
int GetHead(Queue *q, ElemType *e);
int EnQueue(Queue **q, ElemType e);
int DeQueue(Queue **q, ElemType *e);
#endif
queue.c
#include <stdio.h>
#include <stdlib.h>
#include "queue.h"
int InitQueue(Queue **q)
...{
(*q)->base = (ElemType *)malloc(MaxQSize * sizeof(ElemType));
if(!(*q)->base)
return 0;
(*q)->front = 0;
(*q)->rear = 0;
return 1;
}
int QueueEmpty(Queue *q)
...{
if(q->rear == q->front)
return 1;
else
return 0;
}
int QueueLength(Queue *q)
...{
return (q->rear - q->front + MaxQSize) % MaxQSize;
}
int EnQueue(Queue **q, ElemType e)
...{
if(((*q)->rear + 1) % MaxQSize == (*q)->front)
return 0;
(*q)->base[(*q)->rear] = e;
(*q)->rear = ((*q)->rear + 1) % MaxQSize;
return 1;
}
int DeQueue(Queue **q, ElemType *e)
...{
if((*q)->rear == (*q)->front)
return 0;
*e = (*q)->base[(*q)->front];
(*q)->front = ((*q)->front + 1) % MaxQSize;
return 1;
}
QueueMain.c
#include <stdio.h>
#include "queue.h"
int main(int argc, char **argv)
...{
ElemType e;
Queue *q;
q = (Queue *)malloc(sizeof(Queue));
InitQueue(&q);
while((e = getchar()) != '#')
...{
EnQueue(&q, e);
}
while(!QueueEmpty(q))
...{
DeQueue(&q, &e);
printf("%c ", e);
}
return 0;
}
用一组抵制连续的存储单元依次存放从队头到队尾的元素
另外两个指针front和rear分别指示队列头元素和尾元素的位置
queue.h
#ifndef _QUEUE_H
#define _QUEUE_H
#define MaxQSize 100
typedef int ElemType;
typedef struct SqQueue...{
ElemType *base;
int front;
int rear;
}Queue;
int InitQueue(Queue **q);
int DestroyQueue(Queue **q);
int ClearQueue(Queue **q);
int QueueEmpty(Queue *q);
int QueueLength(Queue *q);
int GetHead(Queue *q, ElemType *e);
int EnQueue(Queue **q, ElemType e);
int DeQueue(Queue **q, ElemType *e);
#endif
queue.c
#include <stdio.h>
#include <stdlib.h>
#include "queue.h"
int InitQueue(Queue **q)
...{
(*q)->base = (ElemType *)malloc(MaxQSize * sizeof(ElemType));
if(!(*q)->base)
return 0;
(*q)->front = 0;
(*q)->rear = 0;
return 1;
}
int QueueEmpty(Queue *q)
...{
if(q->rear == q->front)
return 1;
else
return 0;
}
int QueueLength(Queue *q)
...{
return (q->rear - q->front + MaxQSize) % MaxQSize;
}
int EnQueue(Queue **q, ElemType e)
...{
if(((*q)->rear + 1) % MaxQSize == (*q)->front)
return 0;
(*q)->base[(*q)->rear] = e;
(*q)->rear = ((*q)->rear + 1) % MaxQSize;
return 1;
}
int DeQueue(Queue **q, ElemType *e)
...{
if((*q)->rear == (*q)->front)
return 0;
*e = (*q)->base[(*q)->front];
(*q)->front = ((*q)->front + 1) % MaxQSize;
return 1;
}
QueueMain.c
#include <stdio.h>
#include "queue.h"
int main(int argc, char **argv)
...{
ElemType e;
Queue *q;
q = (Queue *)malloc(sizeof(Queue));
InitQueue(&q);
while((e = getchar()) != '#')
...{
EnQueue(&q, e);
}
while(!QueueEmpty(q))
...{
DeQueue(&q, &e);
printf("%c ", e);
}
return 0;
}
相关文章推荐
- 面向数据c++数据结构之基本数据结构(队列)--【美】Jan Harrington 陈博译
- 【数据结构与算法】基本数据结构——队列的顺序表示
- 数据结构——基本数据结构之队列
- 【数据结构与算法】基本数据结构——队列的链式表示
- 【数据结构与算法001】基本数据结构——队列
- 程序猿必修课之数据结构(一)数据结构基本概念和术语
- 数据结构之栈与队列(一)基本概念
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 链队列基本操作-数据结构
- 【数据结构与算法003】基本数据结构——线性表(链表)
- 队列的基本操作应用---舞伴问题(数据结构实验项目三)
- 数据结构大学教程之数据结构及其基本概念(1)
- 数据结构之队列基本实现
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之一(基本数据结构)
- 数据结构复习(重写某些重要数据结构API) ------------队列
- 【数据结构与算法002】基本数据结构——栈
- 数据结构之数组(以此为例引入数据结构基本概念)