#include<stdlib.h>
#include <stdio.h>
#include<iostream>
using namespace std;
typedef int TYPE;
#define SIZE 5
//创建队列
struct QUE
{
TYPE data[SIZE];
int sign;
};
//初始化队列
QUE*queue_init()
{
QUE*temp = (QUE*)malloc(sizeof(QUE));
memset(temp->data, 0, sizeof(TYPE)*SIZE);
temp->sign = -1;
return temp;
}
//队列插入数据
void queue_push(QUE*queue, TYPE val)
{
if (queue->sign < SIZE-1) //SIZE-1表示队列还有空间,若为SIZE可能已满。
{
queue->data[++(queue->sign)] = val;
cout << "数据" << val << "入队列成功" << endl;
}
else
{
cout << "队列已满,插入数据失败!" << endl;
}
}
//队列数据输出
TYPE queue_pop(QUE*queue)
{
TYPE temp=queue->data[0];
for (int i = 0; i < queue->sign; i++)queue->data[i] = queue->data[i + 1];
queue->sign--;
return temp;
}
//队列首元素
TYPE queue_top(QUE*queue)
{
return queue->data[0];
}
int main()
{
int k = 0;
QUE*test = queue_init();
queue_push(test, 11);
queue_push(test, 22);
queue_push(test, 33);
queue_push(test, 44);
queue_push(test, 55);
queue_push(test, 66);
cout << "\n\n";
test->sign >= 0 ? printf("队首元素:%d\n", queue_top(test)):printf("队列无数据\n");
cout << "\n\n";
if(test->sign < 0)printf("队列无数据");
else
{
cout << "队列输出数据:" << endl;
while (test->sign>=0)
{
cout << queue_pop(test) << "--->";
}
}
getchar();
getchar();
return 0;
}