学习C++的一些范例
源代码在线查看: 程序16.2:用链表实现队列.cpp
/******程序16.2:用链表实现队列.cpp******/
#include
#include
using namespace std;
class Information
{
private:
string sInfoName;
string sDate; //数据
public:
Information(string sInfoName) //从键盘读数据信息
{
this->sInfoName=sInfoName;
cout cin>>sDate;
}
string Disp_Info() //显示节点数据信息
{
return sDate;
}
};
class Node
{
private:
string sNodeName; //节点标示名称
Information INFO; //节点数据信息(Information)
public:
Node *NEXT; //指向下一节点的节点指针(NEXT)
Node(string sNodeName,Node *NEXT=NULL):INFO(sNodeName)
{
this->sNodeName=sNodeName;
this->NEXT=NEXT;
}
string Disp_Node() //显示节点数据信息
{
return sNodeName;
}
};
class QueClass //定义一个QueClass类
{
private:
Node *FRONT; //队列头
Node *REAR; //队列尾
public:
QueClass() //构造符函数
{
FRONT=NULL;
REAR=NULL;
}
~QueClass() //析造符函数
{
while(FRONT!=NULL)
{
FRONT=FRONT->NEXT;
delete FRONT;
}
}
void AddNode(string str); //增加节点
void DeleNode(); //删除当前节点
void Traverse();
};
void QueClass::AddNode(string str)//增加节点到队列头
{
Node *n=new Node(str);
if(FRONT==NULL) //创建队列的第一个节点
{
n->NEXT=NULL;
FRONT=n;
REAR=n; //FRONT和REAR指向唯一的n
return; //函数返回,不再向下执行
}
else
{
REAR->NEXT=n; //原REAR的NEXT指向n
REAR=n; //n作为新的REAR
}
}
void QueClass::DeleNode() //删除队列头节点
{
if(FRONT==NULL)
{
cout return;
}
Node *TEMP;
TEMP=FRONT;
FRONT=FRONT->NEXT;
delete TEMP;
}
void QueClass::Traverse() //遍历队列(浏览所有节点信息)
{
if(FRONT==NULL)
{
cout }
else
{
Node *TEMP;
for(TEMP=FRONT;TEMP!=NULL;TEMP=TEMP->NEXT)
{ //循环显示所有节点信息
cout }
}
}
int main() //主函数
{
QueClass QueObj;
string data;
cout char cCmd;
do
{
cout cin >> cCmd;
switch(cCmd)
{
case 'A':
case 'a':
{
cout cin >> data;
QueObj.AddNode(data);
break;
}
case 'D':
case 'd':
{
QueObj.DeleNode();
break;
}
case 'T':
case 't':
{
QueObj.Traverse();
break;
}
case 'E':
case 'e':
{
cout break;
}
default:
cout }
}while(cCmd!='E' && cCmd!='e');
return 0;
}