队列类 - 链式存储

来源:互联网 发布:哈密尔顿回路c语言 编辑:程序博客网 时间:2024/05/18 03:58

代码:

// linkqueue.hpp// 队列类#pragma once#include "linklist.hpp"template <typename T>class LinkQueue{public:LinkQueue();~LinkQueue();public:int clear();int append(T &t);int retieve(T &t);int header(T &t);int length();protected:LinkList<T> *m_list;};template <typename T>LinkQueue<T>::LinkQueue(){m_list = new LinkList < T > ;}template <typename T>LinkQueue<T>::~LinkQueue(){clear();delete m_list;m_list = NULL;}template <typename T>int LinkQueue<T>::clear(){T t;while (m_list->getLen() > 0) {m_list->del(0, t);}return 0;}template <typename T>int LinkQueue<T>::append(T &t){return m_list->insert(t, m_list->getLen());}template <typename T>int LinkQueue<T>::retieve(T &t){return m_list->del(m_list->getLen() - 1, t);}template <typename T>int LinkQueue<T>::header(T &t){return m_list->get(0, t);}template <typename T>int LinkQueue<T>::length(){return m_list->getLen();}

// main.cpp// 队列类测试程序#include <iostream>#include <cstdio>#include "linkqueue.hpp"using namespace std;struct Student{char name[32];int age;};void play(){Student s1, s2, s3;s1.age = 21;s2.age = 22;s3.age = 23;LinkQueue<Student> lq; // 创建队列lq.append(s1); // 入队列lq.append(s2);lq.append(s3);Student tmp;lq.header(tmp);cout << "header of queue: " << tmp.age << endl;cout << "length of queue: " << lq.length() << endl;while (lq.length() > 0) {lq.retieve(tmp);cout << tmp.age << " ";}cout << endl;lq.clear();}int main(){play();return 0;}

有关链表类的设计与实现请参看我的另两篇文章:C++链表模板类 线性表链式存储设计与实现 - API实现

0 0
原创粉丝点击