1.数据元素是整型数据。
2. 基于顺序存储的循环队列实现以下几个基本操作: EnterQueue, DeleteQueue
3. 要求在main函数里按如下要求运行:
(1)1,2,3入队列
(2)显示队列
(3)1,2出队
(4)显示队列
(5)4,5,6入队列
(6)显示队列
(7)3,4出队
(8)显示队列
(9)7,8,9入队列
(10)显示队列
(11)10入队列
#include
#define TRUE 1
#define FALSE 0
#define QueueElementType int
#define MAXSIZE 50 /*队列的最大长度*/
typedef struct
{
QueueElementType element[MAXSIZE]; /* 队列的元素空间*/
int front; /*头指针指示器*/
int rear; /*尾指针指示器*/
}SeqQueue;
/*初始化操作*/
void InitQueue(SeqQueue *Q)
{
/* 将*Q初始化为一个空的循环队列 */
Q->front=Q->rear=0;
}
/*入队操作*/
int EnterQueue(SeqQueue *Q, QueueElementType x)
{
}
/*出队操作*/
int DeleteQueue(SeqQueue *Q, QueueElementType *x)
{
}
int GetHead(SeqQueue *Q, QueueElementType *x)
{
/*提取队列的队头元素,用x返回其值*/
if(Q->front==Q->rear) /*队列为空*/
return(FALSE);
*x=Q->element[Q->front];
return(TRUE); /*操作成功*/
}
int IsEmpty(SeqQueue *Q)
{
/*提取队列的队头元素,用x返回其值*/
if(Q->front==Q->rear) /*队列为空*/
return(TRUE);
else
return(FALSE); /*操作成功*/
}
void PrintQueue(SeqQueue *Q)
{
QueueElementType f;
f=Q->front;
while(f!=Q->rear)
{
printf("%5d",Q->element[f]);
f=(f+1)% MAXSIZE;
}
}
/*PrintList*/
int main()
{
SeqQueue q;
int e;
InitQueue(&q);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define MAXSIZE 10
typedef int ElemType;
typedef struct{
ElemType data[MAXSIZE];
int front, rear; // 队头指针和队尾指针
} SeqQueue;
// 初始化队列
void InitQueue(SeqQueue *q) {
q->front = q->rear = 0;
}
// 入队操作
int EnterQueue(SeqQueue *q, ElemType x) {
if ((q->rear + 1) % MAXSIZE == q->front) { // 队列已满
return FALSE;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
return TRUE;
}
// 出队操作
int DeleteQueue(SeqQueue *q, ElemType *x) {
if (q->front == q->rear) { // 队列为空
return FALSE;
}
*x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return TRUE;
}
// 获取队头元素
int GetHead(SeqQueue *q, ElemType *x) {
if (q->front == q->rear) { // 队列为空
return FALSE;
}
*x = q->data[q->front];
return TRUE;
}
// 判断队列是否为空
int IsEmpty(SeqQueue *q) {
if (q->front == q->rear) { // 队列为空
return TRUE;
}
return FALSE;
}
// 打印队列元素
void PrintQueue(SeqQueue *q) {
int i = q->front;
while (i != q->rear) {
printf("%d ", q->data[i]);
i = (i + 1) % MAXSIZE; // 循环遍历
}
}
int main() {
SeqQueue q;
int i, e;
// (1) 1,2,3入队列
InitQueue(&q);
EnterQueue(&q, 1);
EnterQueue(&q, 2);
EnterQueue(&q, 3);
// (2) 显示队列
printf("队列元素为:");
PrintQueue(&q);
printf("\n");
// (3) 1,2出队
DeleteQueue(&q, &e);
DeleteQueue(&q, &e);
// (4) 显示队列
printf("队列元素为:");
PrintQueue(&q);
printf("\n");
// (5) 4,5,6入队列
EnterQueue(&q, 4);
EnterQueue(&q, 5);
EnterQueue(&q, 6);
// (6) 显示队列
printf("队列元素为:");
PrintQueue(&q);
printf("\n");
// (7) 3,4出队
DeleteQueue(&q, &e);
DeleteQueue(&q, &e);
// (8) 显示队列
printf("队列元素为:");
PrintQueue(&q);
printf("\n");
// (9) 7,8,9入队列
EnterQueue(&q, 7);
EnterQueue(&q, 8);
EnterQueue(&q, 9);
// (10) 显示队列
printf("队列元素为:");
PrintQueue(&q);
printf("\n");
// (11) 10入队列
EnterQueue(&q, 10);
// (12) 显示队列
printf("队列元素为:");
PrintQueue(&q);
printf("\n");
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: