返回信息流1.顺序队列的实现
[cpp] view plaincopy
#include <cstdlib>
#include <iostream>
using namespace std;
template <class Type>
class Queue
{
private:
Type *q;
int front,rear,max;
public:
Queue(int m):max(m)
{
q=new Type(max);
rear=front=0;
}
~Queue()
{
delete[] q;
}
bool Add(Type item);
bool Del(Type &item);
bool QueueEmpty();
bool QueueFull();
};
template <class Type>
bool Queue<Type>::QueueEmpty()
{
if(front==rear)
return true;
else
return false;
}
template <class Type>
bool Queue<Type>::QueueFull()
{
if((rear+1)%max==front)
return true;
else
return false;
}
template <class Type>
bool Queue<Type>::Add(Type item)
{
if(QueueFull())
{
cout<<"Queue if full"<<endl;
return false;
}
else
{
q[rear]=item;
rear=(rear+1)%max;
return true;
}
}
template <class Type>
bool Queue<Type>::Del(Type &item)
{
if(QueueEmpty())
{
cout<<"Queue is empty!"<<endl;
return false;
}
else
{
item=q[front];
front=(front+1)%max;
return true;
}
}
int main(int argc, char *argv[])
{
Queue<int> *q=new Queue<int>(10);
q->Add(4);
q->Add(5);
int i=0;
q->Del(i);
cout<<i<<endl;
q->Del(i);
cout<<i<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
2.链式队列的实现
[cpp] view plaincopy
#include <cstdlib>
#include <iostream>
using namespace std;
template <class Type>
class LinkedQueue
{
private:
struct node
{
Type data;
struct node *link;
};
struct node *top,*rear;
public:
LinkedQueue()
{
rear=top=NULL;
}
~LinkedQueue()
{
node *temp;
while(top)
{
temp=top;
top=top->link;
delete temp;
}
}
bool Add(Type item);
bool Del(Type &item);
bool QueueEmpty();
};
template <class Type>
bool LinkedQueue<Type>::QueueEmpty()
{
if(top==NULL)
return true;
else
return false;
}
template <class Type>
bool LinkedQueue<Type>::Add(Type item)
{
node *t=new node;
if(t==NULL)
{
cout<<"out of space!"<<endl;
return false;
}
else
{
t->data=item;
t->link=NULL;
if(rear==NULL)
{
top=t;
rear=t;
}
else
{
rear->link=t;
rear=t;
}
return true;
}
}
template <class Type>
bool LinkedQueue<Type>::Del(Type &item)
{
if(QueueEmpty())
{
cout<<"Queue is empty!"<<endl;
return false;
}
else
{
node *t;
t=top;
item=t->data;
if(top==rear)
{
top=NULL;
rear=NULL;
}
else
{
top=top->link;
}
delete t;
return true;
}
}
int main(int argc, char *argv[])
{
LinkedQueue<int> *q=new LinkedQueue<int>();
q->Add(4);
q->Add(5);
int i=0;
q->Del(i);
cout<<i<<endl;
q->Del(i);
cout<<i<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #84618同步于 2014/12/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
分享一个通用队列的源码,供学数据结构的小盆友们参考,大神轻
FromSixToTen
2014/12/4镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复