#include<bits/stdc++.h>
using namespace std;
typedef struct node{
int data;
struct node *next;
}node,*lnode;
typedef struct {
lnode front;
lnode rear;
}queue1,*lqueue;
void init(lqueue &q){
lnode p=new node;
p->next=NULL;
q->front=p;
q->rear=p;
}
void push(lqueue &q,int k){
lnode p=new node;
p->data=k;
p->next=NULL;
q->rear->next=p;
q->rear=p;
}
bool isempty(lqueue q){
if(q->front==q->rear){
return true;
}else return false;
}
void pop(lqueue &q,int &i){
if(!isempty(q)){
lnode p=(lnode)malloc(sizeof(node));
p=q->front->next;
i=p->data;
q->front->next=p->next; //注意这边的next
if(p==q->rear)q->rear=q->front;
delete p;
}else return;
}
int main(){
int n;
cin>>n;
lqueue q=new queue1;
init(q);
while(n!=0){
push(q,n);
cin>>n;
}
while(!isempty(q)){
int k=0;
pop(q,k);
cout<<k<<" ";
}
}
链式存储队列
于 2023-08-10 23:24:45 首次发布