/ .h //
#define N 100
typedef char datatype;
//队列问题
struct queue
{
datatype data[N];
int front;//对头
int rear;//队尾
};
typedef struct queue QUEUE;
void initQueue(QUEUE * sq);
int isempyty(QUEUE *sq);
datatype getHead(QUEUE *sq);
void enQUEUE(QUEUE *sq, datatype data);
datatype deQUEUE(QUEUE *sq);
void showQUEUE(QUEUE *sq);
// .c //
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdlib.h>
#include <string>
#include "stackNode.h"
#define N 100
typedef char datatype;
//队列问题
//struct queue
//{
//
// datatype data[N];
// int front;//对头
// int rear;//队尾
//};
void initQueue(QUEUE * sq)
{
//实现队列初始化
sq->front = sq->rear = 0;
}
int isempyty(QUEUE *sq)
{
if (sq->front == sq->rear)
{
return 1;//位空
}
else
{
return 0;
}
}
datatype getHead(QUEUE *sq)
{
if (sq->front == sq->rear)
{
return 1;
}
return sq->data[sq->front];
}
void enQUEUE(QUEUE *sq, datatype data)
{
if (sq->rear == N)
{
printf("队列已经满了!");
return;
}
else
{
sq->data[sq->rear] = data;//入队
sq->rear++;//往前移动一个
}
}
datatype deQUEUE(QUEUE *sq)
{
if (sq->front == sq->rear)//判断队列是否为空
{
printf("队列为空!");
return -1;
}
else
{
sq->front++;//删除一个元素,向前移动一个
return sq->data[sq->front - 1];//出队
}
}
void showQUEUE(QUEUE *sq)
{
if (sq->front == sq->rear)//判断队列是否为空
{
printf("队列为空!");
return ;
}
else
{
for (int i = sq->front; i < sq->rear; i++)
{
printf("sq data :%c\n", sq->data[i]);
}
}
}
void main()
{
QUEUE q1;
//q1 = NULL;
initQueue(&q1);
char *str = "abcdefg";
char *p = str;
while (*p != '\0')
{
enQUEUE(&q1, *p); //字符入队
showQUEUE(&q1);//显示队列所有的元素
p++;
}
printf("对头的数据:%c\n\n\n", getHead(&q1));
while (!isempyty(&q1))
{
printf("出兑的数据:%c\n", deQUEUE(&q1));
}
system("pause");
}