代码:
main.cpp
#include<bits/stdc++.h>
#include"huandui.h"
using namespace std;
int main()
{
sqqueue *p;///不要忘了用引用!
initqueue(p);
jindui(p,1);
jindui(p,2);
jindui(p,3);
int a=queueempty(p);
cout<<a<<endl;
int k=chudui(p);
cout<<k<<endl;
int b=duichang(p);
cout<<b<<endl;
jindui(p,4);
jindui(p,5);
jindui(p,6);///到6的时候队就已经满了!
int c=duichang(p);
cout<<c<<endl;
for(int i=0;i<c;i++)
cout<<chudui(p)<<endl;
free(p);
return 0;
}
huandui.h
#ifndef HUANDUI_H_INCLUDED
#define HUANDUI_H_INCLUDED
typedef struct
{
int data[5];
int rear,frontt;
}sqqueue;
void initqueue(sqqueue *&p);
void xiaohui(sqqueue *&p);
int queueempty(sqqueue *p);
int duichang(sqqueue *p);
void jindui(sqqueue *&p,int q);
int chudui(sqqueue *&p);
#endif // HUANDUI_H_INCLUDED
#include"huandui.h"
#include<bits/stdc++.h>
using namespace std;
void initqueue(sqqueue *&p)///初始化
{
p=(sqqueue *)malloc(sizeof(sqqueue));
p->rear=0;
p->frontt=0;
}
void xiaohui(sqqueue *&p)///销毁
{
free(p);
}
int queueempty(sqqueue *p)///判断栈是否为空
{
return (p->rear==p->frontt);
}
int duichang(sqqueue *p)///求队长
{
int temp,k=0;
temp=p->frontt;
while(temp!=p->rear)
{
temp=(temp+1)%5;
k++;
}
return k;
}
void jindui(sqqueue *&p,int q)///进队
{
if((p->rear+1)%5==p->frontt)
{
cout<<"队已满"<<endl;
return;
}
p->rear=(p->rear+1)%5;
p->data[p->rear]=q;
}
int chudui(sqqueue *&p)///出队,当出队函数返回出队元素的时候就不怎么需要一个专门的输出函数了!
{
if(p->frontt==p->rear)
exit(0);
p->frontt=(p->frontt+1)%5;
int s=p->data[p->frontt];
return s;
}
运行结果:
知识点总结:
环形队列如何判断队空和队满以及环形队列是如何实现的!
心得体会:
在return和exit上出了点问题,还是对知识点掌握得不好,没法灵活运用!