queue.h
#include<iostream>
#define N 10
using namespace std;
typedef struct myqueue
{
int arr[N];
unsigned int begin;
unsigned int last;
} Queue;
void init(Queue *p);
void show(Queue *p);
int isempty(Queue *p);
int isfull(Queue *p);
void push(Queue *p, int key);
int pop(Queue *p);
queue.cpp
#include"queue.h"
void init(Queue *p)
{
memset(p->arr, 0, sizeof(int)*N);
p->begin = 0;
p->last = 0;
}
void show(Queue *p)
{
cout << "队列内情况";
for (int i = p->begin; i < p->last; i++)
{
cout << p->arr[i] << " ";
}
cout << endl;
}
int isempty(Queue *p)
{
if (p->last==0)
{
return 1;
}
else
{
return 0;
}
}
int isfull(Queue *p)
{
if (p->last==N)
{
return 1;
}
else
{
return 0;
}
}
void push(Queue *p,int key)
{
if (!isfull(p))
{
p->last++;
if (!isempty(p))
{
for (int i = p->last-1; i >0; i--)
{
*(p->arr + i) = *(p->arr + i - 1);
}
}
p->arr[0] = key;
}
}
int pop(Queue *p)
{
if (!isempty(p))
{
return p->arr[--p->last];
}
}
main.cpp
#include"queue.h"
int main(int argc, char *argv[])
{
Queue q;
init(&q);//注意一定要初始化,通过初始化给队列分配内存空间
for (int i = 0; i < 10; i++)
{
push(&q, i);
show(&q);
}
for ( int j = 0;j<10 ;j++)
{
pop(&q);
show(&q);
}
system("pause");
return 0;
}