#include<iostream>
using namespace std;
struct QueueNode
{
int val;
QueueNode *next;
};
struct QueueLink
{
QueueNode *front; //队头
QueueNode *rear; //队尾
};
int Init(QueueLink *queue)
{
//创建一个空节点,队头队尾都指向它
queue->front=new QueueNode();
if(queue->front!=NULL)
{
queue->rear=queue->front;
queue->front->next=NULL;
return 1;
}
return 0;
}
int InQueue(QueueLink *queue,int val)
{
QueueNode *p = new QueueNode();
if(p != NULL)
{
p->val=val;
p->next=NULL;
queue->rear->next=p;
queue->rear=p;
return 1;
}
return 0;
}
int OutQueue(QueueLink *queue, int *val)
{
if(queue->front == queue->rear)
{
return 0;
}
QueueNode *p = queue->front->next;
queue->front->next=p->next;
if(queue->rear == p)
{
queue->rear = queue->front;
}
*val = p->val;
delete p;
p=NULL;
return 1;
}
int GetHead(QueueLink *queue)
{
if(queue->front == queue->rear)
{
return 0;
}
return queue->front->next->val;
}
void print(QueueLink *queue)
{
QueueNode *node = queue->front->next;
if(node == NULL)
{
return;
}
while(node!=NULL)
{
cout<<node->val<<" ";
node=node->next;
}
cout<<endl;
}
int main()
{
int n,m,val;
QueueLink queue;
Init(&queue);
cin>>n;
while(n--)
{
cin>>m;
InQueue(&queue,m);
}
print(&queue);
OutQueue(&queue,&val);
cout<<val<<endl;
print(&queue);
if(GetHead(&queue)!=0)
{
cout<<GetHead(&queue)<<endl;
}
return 0;
}
链队列的基本操作
最新推荐文章于 2023-02-24 22:26:04 发布