首页 > 代码库 > 双向链表实现队列
双向链表实现队列
双向链表的结点包含前驱指针和后继指针,队列入队操作是在双向链表尾部添加元素,队列的出队操作是把双向链表的头结点删除,判断队列是否为空只要判断双向链表的头指针是否指向了NULL即可。
# include <iostream> # include <cstdlib> using namespace std; struct queueNode { int val; queueNode *pre; queueNode *next; queueNode(int x):val(x),pre(NULL),next(NULL){} }; queueNode *head=NULL; queueNode *tail=NULL; queueNode *cur=head; void push(int x) //入队 { if(head==NULL) { head=new queueNode(x); cur=head; tail=head; } else { queueNode *tmp=new queueNode(x); cur->next=tmp; tmp->pre=cur; cur=tmp; tail=cur; } } bool isempty(queueNode *head) //判断队列是否为空 { return head==NULL; } void pop() //出队 { if(tail==NULL) return ; queueNode *tmp=head; head=head->next; if(head) head->pre=NULL; delete tmp; } int front(queueNode *head) //返回队头元素 { if(isempty(head)) return -1; return head->val; } int main() { push(1); push(2); push(3); cout<<front(head)<<endl; pop(); cout<<isempty(head)<<endl; system("pause"); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。