链式队列的实现(c++)
2015-07-02 21:51
429 查看
队列的特点是先进先出。
【linkqueue.h代码】
// linkqueue.h代码 #ifndef QUEUE_H #define QUEUE_H template <class T> class Queue; template <class T> class linknode { friend class Queue<T>; private: T data; linknode<T> *next; }; template <class T> class Queue { public: Queue() //利用构造函数初始化队列 { front=rear=0; }; bool Isempty(); void Front(); void Rear(); void Push(T item); void Pop(); private: linknode<T> *front; linknode<T> *rear; }; //------判断队列是否为空--------- template <class T> inline bool Queue<T>::Isempty() { return front==0; } //-------元素进队列(队尾插入)------- template <class T> void Queue<T>::Push(T item) { linknode<T> *p=new linknode<T>(); p->data=item; p->next=0; cout<<item<<"进队"<<endl; if(Isempty()) { front=rear=p; } else { rear->next=p; rear=p; } } //------元素出列(队首删除)--------- template <class T> void Queue<T>::Pop() { if(Isempty()) { cout<<"队列为空,不能出列"<<endl; } else { linknode<T> *p=front; cout<<front->data<<"出队"<<endl; front=front->next; delete p; } } //------获取队首元素--------------- template <class T> inline void Queue<T>::Front() { if(!Isempty()) { cout<<"队首元素为"<< front->data<<endl; } else { cout<< "队列为空"<<endl; } } //------获取队尾元素------------- template <class T> inline void Queue<T>::Rear() { if(!Isempty()) { cout<<"队尾元素为"<< rear->data<<endl; } else { cout<< "队列为空"<<endl; } } #endif
【主程序】
#include "linkqueue.h" #include <iostream> using namespace std; int main() { Queue<int> q; q.Push(10); q.Push(20); q.Push(30); q.Push(40); q.Front(); q.Rear(); q.Pop(); q.Pop(); q.Pop(); q.Pop(); system("pause"); return 0; }
【结果图】
相关文章推荐
- C++ 变量名命名规则
- 《C语言及程序设计》实践参考——递归函数
- c语言实现window关机操作
- 《C语言及程序设计》实践项目——递归函数
- 《C语言及程序设计》程序阅读——递归函数
- c++ stl资源--qsort排序
- stl之vector的应用
- 自学笔记-C语言复习2015年7月2日
- c++ 重载运算与类型转换
- 《C++ 沉思录》阅读笔记——句柄类
- 《C++ 沉思录》阅读笔记——代理类
- strcpy/strncpy/strcat/strcmp/strlen函数的c语言实现
- C++之探索多态的本质(虚函数与虚表)2
- C++课程设计:学生成绩管理系统
- Visual C++ Tips: warning C4996: 'stricmp' was declared deprecated
- C++程序设计之四书五经[转自2004程序员杂志]--下篇
- C++程序设计之四书五经[转自2004程序员杂志]--上篇
- Visual C++ Tips: fatal error LNK1276: invalid directive 'ComMode.Obj' found; does not start with '/'
- Qt移动应用开发(六):QML与C++互动
- LeetCode-Largest Number-解题报告