您的位置:首页 > 编程语言 > C语言/C++

循环队列ADT实现(C++)2018.3.15

2018-03-15 15:24 169 查看
#include <iostream>

using namespace std;
/**< 循环队列ADT */
/**< 定义结点 */
struct QNode
{
int data;
int cur;
};
/**< 循环队列结构体 */
struct Queue
{
struct QNode* base;
int Front;
int Rear;
int Len;
};
/**< 初始化循环队列 */
void Init_Queue(struct Queue &q)
{
q.base=new QNode[100];
q.Front=q.Rear=q.Len=0;
}
/**< 销毁队列 */
void Destroy_Queue(struct Queue &q)
{
delete q.base;
}
/**< 队列判空 */
bool Is_Empty(struct Queue &q)
{
if(q.Len==0)
return true;
else
return false;
}
/**< 队列判满 */
bool Is_Full(struct Queue &q)
{
if(q.Len==100)
return true;
else
return false;
}
/**< 入队 */
void En_queue(struct Queue &q,int Val)
{
if(!Is_Full(q))
{
q.base[q.Rear%100].data=Val;
q.Rear=(q.Rear+1)%100;
q.Len++;
}
else cout<<"队满"<<endl;
}
/**< 出队 */
int De_Queue(struct Queue &q,int &Val)
{
if(!Is_Empty(q))
{
Val=q.base[q.Front].data;
q.Front=(q.Front+1)%100;
q.Len--;
cout<<"队首元素:"<<Val<<endl;
return Val;
}
else cout<<"队空"<<endl;
return 0;
}

/**< 测试代码 */
int main()
{   int n;
struct Queue q;
Init_Queue(q);
En_queue(q,1);
En_queue(q,2);
En_queue(q,3);
En_queue(q,4);
De_Queue(q,n);
De_Queue(q,n);
De_Queue(q,n);
De_Queue(q,n);
De_Queue(q,n);
cout << "Hello world!" << endl;
return 0;
}
今天还是比较开心的,一次调试就成功了,=。=也可能因为简单吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: