链式存储队列

链式存储队列_第1张图片

#include
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<

你可能感兴趣的:(暑假刷题,c++,数据结构)