链队的实现

xiaoxiao2025-04-17  13

语言:C++

#include <iostream> using namespace std; typedef struct QNode { int data; struct QNode *next; }QNode,*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; //初始化 void InitQueue(LinkQueue &Q) { //构造一个空队列Q Q.front=Q.rear=new QNode; Q.front->next=NULL; } //入队 void EnQueue(LinkQueue &Q,int e) { //插入元素e为Q的新的队尾元素 QNode *p; p=new QNode; p->data=e; p->next=NULL;Q.rear->next=p; Q.rear=p; } //出队 int DeQueue(LinkQueue &Q,int &e) { //删除Q的队头元素,用e返回其值 QNode *p; if(Q.front==Q.rear)cout<<"队尾空,出队失败!"<<endl; p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear==p)Q.rear=Q.front; delete p; return e; } //求队长 int QueueLength(LinkQueue Q) { int i=0; QNode *p; p=Q.front->next; while(p!=Q.rear) { i++; p=p->next; } p=p->next; i++; return i; } //输出队 void display(LinkQueue &Q) { QNode *p; p=Q.front->next; cout<<"["; while(p!=Q.rear) { cout<<p->data<<"<"; p=p->next; } cout<<p->data; cout<<"]"<<endl; } int main() { LinkQueue Q;int x;int e;int i; cout<<"欢迎使用循环队列!功能如下:"<<endl; cout<<"--------------------------"<<endl; cout<<"[1].初始化 [2].入队"<<endl; cout<<"[3].出队 [4].取队长"<<endl; cout<<"[5].输出队 [0].退出"<<endl; cout<<"--------------------------"<<endl; cout<<"请输入:";cin>>x; while(x) { switch(x) { case 1:InitQueue(Q);break; case 2:cout<<"请输入要入队的元素:";cin>>e;EnQueue(Q,e);break; case 3:i=DeQueue(Q,e);cout<<"出队元素为:"<<i<<endl;break; case 4:i=QueueLength(Q);cout<<"当前队长为:"<<i<<endl;break; case 5:cout<<"当前队列为(队头在前):"<<endl;display(Q);break; case 0:break; default:cout<<"您的选择错误,请重新输入!"<<endl; } cout<<"请选择您需要的功能:";cin>>x; } return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-5028477.html

最新回复(0)