代码:
// 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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/zyq522376829/article/details/46968431