c++实现队列

xiaoxiao2021-02-27  188

#include <iostream> using namespace std; struct node{//节点双向方便找尾指针的前驱   node* pre;   int data;   node* next; }; struct queueL{     node* head;//头指针     node* tail;//尾指针 }; queueL* init(){     queueL* q=new queueL();     q->head=q->tail=NULL;     return q; } node* createNode(int elem){      node *n=new node();      n->data=elem;      n->next=NULL;      return n; } void Enqueue(queueL* q,int elem){     node* n=createNode(elem);     if(!q->head&&!q->tail){//队列为空         q->head=q->tail=n;     }     else{       q->tail->next=n;       n->pre=q->tail;       q->tail=q->tail->next;     } } int  Dequeue(queueL* q){     int elem;     if(!q->head&&!q->tail){//队列为空        return -1;//返回错误     }     else{         if(q->head==q->tail){//只有一个节点            elem=q->tail->data;            node* c=q->tail;            delete(c);            q->head=q->tail=NULL;            return elem;         }         else{//正常情况             node* c=q->tail;             q->tail=q->tail->pre;             elem=c->data;             delete(c);             return elem;         }     } } int main(){    queueL* q=init();     Enqueue(q,3);     Dequeue(q);      Dequeue(q);     cout<< Dequeue(q); }
转载请注明原文地址: https://www.6miu.com/read-8975.html

最新回复(0)