谁有asp.net做的聊天小程序?发给我一个吧,819948087@qq.com

 我来答
手机用户89997
2011-03-17 · 超过58用户采纳过TA的回答
知道答主
回答量:224
采纳率:0%
帮助的人:0
展开全部
:CirQueue.h
#ifndef CIRQUEUE_H
#define CIRQUEUE_H

const int QueueSize=5; //定义存储队列元素的数组的最大长度

template <class T> //定义模板类CirQueue
class CirQueue
{
public:
CirQueue( ); //构造函数,置空队
~ CirQueue( ); //析构函数
void EnQueue(T x); //将元素x入队
T DeQueue( ); //将队头元素出队
T GetQueue( ); //取队头元素(并不删除)
bool Empty( ); //判断队列是否为空
bool ListQueue( ); //显示队列中内容
private:
T data[QueueSize]; //存放队列元素的数组
int front, rear; //队头和队尾指针,分别指向队头元素的前一个位置和队尾元素的位置
};

/*
* 前置条件:队列不存在
* 输 入:无
* 功 能:初始化队列
* 输 出:无
* 后置条件:创建一个空队列
*/

template <class T>
CirQueue<T>::CirQueue( )
{
front=rear=0;
}

/*
* 前置条件:队列已存在
* 输 入:无
* 功 能:销毁队列
* 输 出:无
* 后置条件:释放队列所占用的存储空间
*/

template <class T>
CirQueue<T>::~CirQueue( )
{

}

/*
* 前置条件:队列已存在
* 输 入:元素值x
* 功 能:在队尾插入一个元素
* 输 出:如果插入不成功,抛出异常
* 后置条件:如果插入成功,队尾增加了一个元素
*/

template <class T>
void CirQueue<T>::EnQueue(T x)
{
if ((rear+1) % QueueSize ==front) throw "上溢";
data[rear]=x; //在队尾处插入元素
rear=(rear+1) % QueueSize; //队尾指针在循环意义下加1
}

/*
* 前置条件:队列已存在
* 输 入:无
* 功 能:删除队头元素
* 输 出:如果删除成功,返回被删元素值,否则,抛出删除异常
* 后置条件:如果删除成功,队头减少了一个元素
*/

template <class T>
T CirQueue<T>::DeQueue( )
{
T x;
if (rear==front) throw "下溢";
x=data[front];
front=(front+1) % QueueSize; //队头指针在循环意义下加1
return x; //读取并返回出队前的队头元素,注意队头指针
}
//指向队头元素的前一个位置
/*
* 前置条件:队列已存在
* 输 入:无
* 功 能:读取队头元素
* 输 出:若队列不空,返回队头元素
* 后置条件:队列不变
*/

template <class T>
T CirQueue<T>::GetQueue( )
{
int i;
if (rear==front) throw "下溢";

return data[front];
}

/*
* 前置条件:队列已存在
* 输 入:无
* 功 能:判断队列是否为空
* 输 出:如果队列为空,返回1,否则,返回0
* 后置条件:队列不变
*/

template <class T>
bool CirQueue<T>::Empty( )
{
if (front==rear)
return 1;
else
return 0;
}

template <class T>
bool CirQueue<T>::ListQueue( )
{
int pos;
if (rear==front)
{
cout<<"空队列"<<endl;
return false;
}
cout<<endl;
if(front<rear)
{
for(pos=0;pos<QueueSize;pos++)
{
if(pos<front||pos>=rear)
cout<<" * ";
else
cout<<" "<<data[pos]<<" ";
}
cout<<endl;
return true;
}
if(front>rear)
{
for(pos=0;pos<QueueSize;pos++)
{
if(pos<front&&pos>=rear)
cout<<" * ";
else
cout<<" "<<data[pos]<<" ";
}
cout<<endl;
return true;
}

}

#endif

//第二个:CirQueue.cpp文件
using namespace std;
#include<conio.h>
#include <iostream> //引用输入输出流
#include "CirQueue.h"

int main()
{
CirQueue<int>a; //创建模版类的实例

int t;
int k;

while(true)
{
cout<<"队列a已存在,请选择操作:"<<endl;
cout<<" 1.入队 2.出队 3.获得队头数据 4.列出队列中内容 0.退出"<<endl;

cin>>t;
switch(t)
{
case 1:cout<<"请输入入队的数据(整数):";
cin>>k;
a.EnQueue(k);
break;
case 2:k=a.DeQueue();
cout<<"出队的数据为:"<<k<<endl;
break;
case 3:k=a.GetQueue();
cout<<"队头的数据为"<<k<<endl;
break;
case 4:cout<<"队列中内容为:";
a.ListQueue();
break;
case 0:exit(0);
break;
default:cout<<"不支持的操作选项,按任意键返回"<<endl;
getch();
break;
}
}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式