码迷,mamicode.com
首页 > 其他好文 > 详细

队列类 - 链式存储

时间:2015-07-20 16:34:22      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:队列      链式   

代码:

// 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实现

版权声明:本文为博主原创文章,未经博主允许不得转载。

队列类 - 链式存储

标签:队列      链式   

原文地址:http://blog.csdn.net/zyq522376829/article/details/46968431

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!