我想知道队列的定义,以及必要的步骤,非常急!!!谢谢!!
解决方案 »
- 怎样在对话框加载时使edit控件显示txt内容?
- 求救,谁能帮我发份WXUtil.h,CtlUtil.h, AMFilter.h,RenBase.h,WinCtrl.h,DSSchedule.h,RefClock.h,SysClock.h,audevcod.h
- 急问 VC++CStatic 的字体设置问题
- MFC的Dialog中如何验证一个字符串是否是有效的邮箱地址?
- 美通无线--招聘C++客户端工程师
- 如何用代码判断的本机的网络已经断开了
- 如何让程序一运行就聚焦到某个视图?
- settimer有没有办法执行不定时的功能?
- image中Savetofile问题
- 请问各位大虾,有关滚动条的问题!
- 怎样让一个用户消息被两个类响应?
- 有判断硬盘分区是ntfs还是fat(文件系统类型)的api么?
1队列的定义
队列是一种受限的线性表。若限定线性表的插入只能在表头位置进行,而删除只能在表尾进行,则称这种线性表为队列。队列中,删除端称为队头,而插入端称为队尾。若某个队列QUEUE为(a1,a2,…,an),则称al为队头元素,an为队尾元素。这时若插入一个元素,它只能被插在队尾而成为an+1,若删除一个元素,则被删除的只能是a1。由这种特点决定了先入队的元素先出队。因此,队列又称为先进先出表。队列中的插入操作称为入队,删除操作称为出队。
2队列的基本运算
同栈一样,队列的运算也是线性表运算的一个子集。
(1)初始化init(Q):将队列Q设置成空状态。
(2)入队列add(Q,x):在队列Q中插入元素x。
其常用的基本运算有:
(3)出队列delete(Q):删除队列Q的队头元素。该运算通常将被删除的元素返回给调用者以备使用。
(4)取队头元素front(Q):返回队列Q的队头元素之值,但并不出队。
(5)判空empty(Q):判断队列Q是否为空队列,若队列为空,则返回真,否则返回假。
用Clist做一个模板,可以支持很多数据类型
2.可以自己写个环形对列
具体做法看任何一本数据结构书
Library: Use Strmbase.lib (retail builds) or Strmbasd.lib (debug builds).
你的问题太不清楚了
CMyQueue::CMyQueue()
{
stringCount=0;
stringArray=NULL;
pos=0;
}CMyQueue::~CMyQueue()
{
stringArray=NULL;
}
void CMyQueue::putToQueue(CString string)
{
stringArray[stringCount++]=string;
}
CString CMyQueue::getFromQueue()
{
return stringArray[pos];
}
void CMyQueue::moveFirst()
{
pos=0;
}
void CMyQueue::moveNext()
{
if(!isEnd())
++pos;
}
void CMyQueue::moveLast()
{
while(!isEnd())
moveNext();
}
BOOL CMyQueue::isEmpty()
{
if(stringCount==0)
return TRUE;
else
return FALSE;
}
BOOL CMyQueue::isEnd()
{
if(stringCount==pos)
return TRUE;
else
return FALSE;
}
void CMyQueue::clear()
{
pos=0;
stringCount=0;
stringArray=NULL;
}
#include <....>(自己看看手册)using namespace std;quere(...)(自己看看手册吧)
struct myStruct //装入的数据
{
};
std::queue<myStruct> myQueue;
myStruct a;
myQueue.push(a) //放在队列尾
myStruct b = myQueue.front(); //得到队列首
myQueue.pop() //移出队列首