链队列

#include <iostream>
using namespace std;
 

/* 定义ElemType为int类型 */
typedef int ElemType;
#define TRUE 1
#define FALSE 0
#define NULL 0
#define flag -1


typedef struct LQNode
{ElemType data;
struct LQNode *next;
}LQNode, * LinkedQNode;


typedef struct
{struct LQNode *front,*rear;
}LQueue,*LinkedQueue;


LinkedQueue LinkedQueueInit()
{LinkedQueue Q;
LinkedQNode p;
Q=new LQueue;
p=new LQNode;
p->next=NULL;
Q->front=Q->rear=p;
return Q;
}

//判队空
int LinkedQueueEmpty(LinkedQueue Q)
{if(Q->front==Q->rear) return TRUE;
else return FALSE;
}

//入队
void LinkedQueueIn(LinkedQueue Q,ElemType x)
{LinkedQNode p=new LQNode;
p->data=x;
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
}

 

//出队
ElemType LinkedQueueOut(LinkedQueue Q)
{LinkedQNode p;
if(Q->front!=Q->rear)
 {p=Q->front->next;
 Q->front->next=p->next;
 ElemType x=p->data;
 delete (p);
 if(Q->front->next==NULL)
 Q->rear=Q->front;
 return x;
 }
}


/*链队列的清空
LinkedQueue LinkedQueueClear(LinkedQueue Q)
{LinkedQNode p,q;
 if(LinkedQueueEmpty(Q))
 cout<<"队列已为空!"<<endl;
else {p=Q->front->next;
     while(!LinkedQueueEmpty(Q))
  {q=p->next;
//p=p->next;

delete p;
p=q;
p=p->next;
}
}
return Q;
}
*/


/*遍历
void LinkedTraverse(LinkedQueue Q)
{if(Q->front->next&&Q->rear->next)
cout<<"空队列!/n";
else
{LinkedQNode p=Q->front->next;
while(p!=Q->rear->next)
{p=p->next;
cout<<p->data<<" ";
}
}
}
*/

int scan()
{int d;
 cout<<"请选择要进行的操作/n";
 cout<<"1.初始化 2.入队3.出队  4判队空 /n";
 cout<<"其他键退出。。。。。/n";
 cin>>d;
 return(d);
}

int main()
{int quit=0;
ElemType e,f;
 LinkedQueue Q;
 while(!quit)
 switch(scan())
 {case 1:Q=LinkedQueueInit();cout<<"/n";break;
 case 2:cout<<"输入你要进队的元素!/n";
  cin>>e;
  LinkedQueueIn(Q,e);cout<<"/n";break;

 case 3:
  if((Q->front->next==NULL)&&(Q->rear->next==NULL))
   cout<<"空链栈!"<<endl;
   else
  {f=LinkedQueueOut(Q);
  cout<<"出队元素是:"<<f<<endl;}
  break;
 //case 4: LinkedTraverse(Q);break;
 //case 4:Q=LinkedQueueClear(Q);
 case 4:if(LinkedQueueEmpty(Q))
   cout<<"队为空!"<<endl;
  else cout<<"队不空!"<<endl;break;
 default:quit=1;}
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值