zoukankan      html  css  js  c++  java
  • C++编程练习(6)----“实现简单的队列的链式存储结构“

    队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出。简称链队列。

    实现代码如下:

    /* LinkQueue.h 头文件 */
    #include<iostream>
    #define OK 1
    #define ERROR 0
    typedef int QElemType;
    typedef int Status;
    
    class QNode{
    public:
    	QNode():data(0),next(NULL) {}
    	QElemType data;
    	QNode *next;
    };
    
    class LinkQueue{
    public:
    	LinkQueue() {front=new QNode;rear=new QNode;front=rear;}
    	Status EnQueue(QElemType e);	/*入队操作*/
    	Status DeQueue(QElemType *e);	/*出队操作*/
    	Status ShowQueue() const;
    private:
    	QNode *front,*rear;	/*队头、队尾指针,队头不保存元素,只起头结点作用,当front==rear时,队列为空*/
    };
    
    Status LinkQueue::EnQueue(QElemType e)
    {
    	QNode *p=new QNode;
    	if(!p)
    		return ERROR;
    	p->data=e;
    	p->next=NULL;
    	rear->next=p; 
    	rear=p;
    	return OK;
    }
    
    Status LinkQueue::DeQueue(QElemType *e)
    {
    	if(rear==front)	/*空队列*/
    		return ERROR;
    	QNode *p=new QNode;
    	if(!p)
    		return ERROR;
    	p=front->next;
    	*e=p->data;
    	front->next=p->next;
    	if(rear==p)
    		rear=front;
    	delete p;
    	return OK;
    }
    
    Status LinkQueue::ShowQueue() const
    {
    	if(rear==front)
    	{
    		std::cout<<"空队列"<<std::endl;
    		return ERROR;
    	}
    	QNode *p=new QNode;
    	if(!p)
    		return ERROR;
    	std::cout<<"队列从队头至队尾内容依次为:";
    	p=front->next;
    	while(p)
    	{
    		std::cout<<p->data<<"  ";
    		p=p->next;
    	}
    	std::cout<<std::endl;
    	return OK;
    }


  • 相关阅读:
    [ios]总结iOS开发当中一些特别注意的问题 【转】
    [ios]Core Data
    [ios]图片转pdf 【转】
    rsync服务的安装与配置
    c# winform及DotnetBar笔记
    我恨博客园
    C#日期格式化(ASP.NET)
    c# winform DatagridView使用总结
    .net2.0数据绑定语法
    div代替window.alert,让这个div显示信息后,在指定之间时间内消失
  • 原文地址:https://www.cnblogs.com/fengty90/p/3768857.html
Copyright © 2011-2022 走看看