C++实现队列之链式存储结构

原创 2015年07月06日 17:09:19
#include <iostream>
#include <string>

using namespace std;

template<typename T>
struct LinkNode{
	T data;
	LinkNode<T> *next;
};

template<typename T>
class LinkQueue{
public:
	LinkQueue();
	LinkQueue(T a[], int n);
	~LinkQueue(){ Clear(); cout << "hehe" << endl; };
	void InputQue(T x);
	void OutQue();
	void Gethead();
	void Empty();
	void Clear();
	void Print();
private:
	LinkNode<T> *front, *rear;
};

template<typename T>
LinkQueue<T>::LinkQueue()         //构造函数初始化一个空链队
{
	front = new LinkNode <T>;
	front->next = NULL; 
	rear = front;
}

template<typename T>
LinkQueue<T>::LinkQueue(T a[], int n)
{
	front = new LinkNode <T>;           //分配一个头结点
	rear = front;
	front->next = NULL;
	for (int i = 0; i < n; ++i)
	{
		LinkNode<T> *newNode = new LinkNode <T>;
		newNode->data = a[i];
		newNode->next = rear->next;                 //队尾入队操作
		rear->next = newNode;
		rear = newNode;
	}
}

template<typename T>
void LinkQueue<T>::InputQue(T x)          //入队
{
	LinkNode<T> *newNode = new LinkNode < T > ;
	newNode->data = x;
	newNode->next = rear->next;
	rear->next = newNode;
	rear = newNode;
}

template<typename T>
void LinkQueue<T>::OutQue()              //出队,返回队列首元素
{
	LinkNode<T> *p = front;
	if (p != rear)
	{
		p = p->next;
		T x = p->data;
		front->next = p->next;
		delete p;
		cout<< x<<endl;
	}
}

template<typename T>
void LinkQueue<T>::Gethead()            //取队首元素
{
	LinkNode<T> *p = front;
	if (p != rear)
	{
		p = p->next;
		T x = p->data;
		cout << x << endl;
	}
}

template<typename T>
void LinkQueue<T>::Print()             //队头到队尾 遍历队列
{
	LinkNode<T> *p = front;
	while (p->next != rear)
	{
		p = p->next;
		cout << p->data << " ";
	}
	cout << rear->data << endl;
}

template<typename T>
void LinkQueue<T>::Empty()                //判断空否?
{
	if (front == rear)
		cout << "队列为空!" << endl;
	else
		cout << "队列非空!" << endl;
}

template<typename T>
void LinkQueue <T>::Clear()        //清空链队
{
	while (front != rear)
	{
		LinkNode<T> *p = front;
		p = p->next;
		front->next = p->next;
		if (p->next == NULL)
			rear = front;         //这一步必不可少
		delete p;
	}
	delete front;
	cout << "已清空" << endl;
}


int _tmain(int argc, _TCHAR* argv[])
{
	int a[] = {1,2,3,4,5,6};
	LinkQueue<int> A(a, 6);
	A.Print();
	A.InputQue(7);
	A.Print();
	A.OutQue();
	A.Print();
	A.Gethead();
	A.Empty();
	//A.Clear();

	return 0;
}

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

单链队列,队列的链式存储结构C++实现

//mList.cpp /* 使用链式结构实现队列操作 @author:天下无双 @date:2014-5-28 @version:2.0 */ #include using namespa...
  • guang_jing
  • guang_jing
  • 2014年05月28日 12:25
  • 1076

队列的基本操作(采用链式存储结构)

队列的初始化、入队、出对、销毁队列。 #include #include #define TRUE 1 #define FALSE 0 #define ERROR -1 typedef ...
  • jiajiayouba
  • jiajiayouba
  • 2013年06月19日 14:51
  • 3140

数据结构——队列的链式存储结构以及实现

队列也是一种特殊的线性表,只允许在一端进行插入操作,在另一端进行删除操作。允许插入的一段为对尾,允许删除的一端为队头。本次记录的是队列的链式存储结构以及实现。该存储结构有两个指针,一个指向头节点,称为...
  • Carry_zwxb
  • Carry_zwxb
  • 2016年10月29日 16:04
  • 1049

队列链式存储结构的C++模板类头文件源代码实现

队列的链式存储结构与链表的区别除了成员函数的不同以外,还有队列的成员变量增加了尾指针,这是因为增加变量需要从链表的尾部添加,若每次从头结点开始遍历的话太费时间,头指针是一个空数据的节点指针,它是一个一...
  • Alex123980
  • Alex123980
  • 2016年06月01日 14:37
  • 598

数据结构队列C++实现 链式和循环

#include #include #include using namespace std; namespace my_space { template class queue...
  • a363344923
  • a363344923
  • 2014年12月07日 15:34
  • 1715

循环队列-链式存储结构-c语言实现

/* 循环队列-线性表-链式结构 */ #include #include #define OK 1 #define ERROR 0typedef int Status; typedef i...
  • u010187139
  • u010187139
  • 2015年07月03日 15:57
  • 1455

循环队列Queue–使用链式存储结构实现

循环队列Queue–使用链式存储结构实现 数据成员 头指针:front 尾指针:rear #include #include #include #define MAX_SIZE (10) #de...
  • jia1000
  • jia1000
  • 2017年09月20日 17:55
  • 118

Java基础 - 队列的链式存储结构及实现

类似于使用链式结构保存线性表,也可以采用链式结构来保存队列的元素,采用链式存储结构的队列也被称为链队列。...
  • ApatheCrazyFan
  • ApatheCrazyFan
  • 2016年11月08日 15:24
  • 1321

C++实现数据结构-队列

最近学了C++,看了下数据结构的东西,这里就跟大家分享一下自己用C++实现队列的一些思想和经验,适合初学者交流学习。 队列分类 队列在数据结构中分为普通队列和环形队列。首先说说普通队列,就是一种类似...
  • CV_YOU
  • CV_YOU
  • 2016年09月19日 21:07
  • 1152

队列的链式存储结构C++实现

采用单链表实现队列,实质上为单链表的一种简化。只需要在链表的头部删除和尾部加入元素即可 /******************************************************...
  • xiaolei09bupt
  • xiaolei09bupt
  • 2015年03月24日 15:59
  • 178
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++实现队列之链式存储结构
举报原因:
原因补充:

(最多只允许输入30个字)