队列问题(c)

来源:互联网 发布:哈达迪在nba的数据 编辑:程序博客网 时间:2024/06/11 07:38

/////////////       .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");
}








0 0