数据结构编译时都能通过,但是运行
程序已经修改好。
/*-------------------------------------------------------
假设以带头结点的单循环链表表示队列,并且只设一个指针指向
队尾结点,不设头指针,试设计相应的置队空、入队和出队的程序。
-----------------------------------------------------*/
#include
using namespace std;
struct Node
{
int data;
Node *next;
};
struct LinkQueue
{
Node *rear;
};
int main()...全部
程序已经修改好。
/*-------------------------------------------------------
假设以带头结点的单循环链表表示队列,并且只设一个指针指向
队尾结点,不设头指针,试设计相应的置队空、入队和出队的程序。
-----------------------------------------------------*/
#include
using namespace std;
struct Node
{
int data;
Node *next;
};
struct LinkQueue
{
Node *rear;
};
int main()
{//=====================函数声明======================
void InitQueue(LinkQueue &Q);//创建一个空队列
void EnQueue(LinkQueue &Q,int e);//插入队尾元素,即入队
void DeQueue(LinkQueue &Q,int &e);//删除队尾元素,即出队
void ClearQueue(LinkQueue &Q);//清空队列
//======================函数声明======================
int e;
LinkQueue Q;
InitQueue(Q);
EnQueue(Q,1);
EnQueue(Q,2);
DeQueue(Q,e);
coutnext= ar;//头结点指针域指向自己
coutdata=e;
p->next= ar->next;
ar->next=p;
ar=p;
coutnext== ar)//队列为空
{
coutnext->next;
ar->next->next=p->next;
if ( ar==p)
{//表明此时队列已经为空,改变尾指针的指向,指向头结点
ar= ar->next;
}
e=p->data;
delete p;
coutnext;//尾指针指向头结点
Node *p;
while( ar->next!= ar)
{
p= ar->next;//p指向队头元素
ar->next=p->next;
delete p;
}
cout<<"清空队列成功!"< 收起