我使用类模版来完成循环链表实现队列的操作。首先定义一个结点类node用来保存结点信息,然后定义队列类Queue,接下来我们思考:要完成队列的4个基本操作即
1.判断队列是否为空
2.在队列尾部push进数据
3.从队列头部取出数据
4.删除掉队列首部的元素
我们这个Queue类需要什么成员变量?
答案是: (维护)队列尾部结点、队列大小就够了。
1.判断队列是否为空
2.在队列尾部push进数据
3.从队列头部取出数据
4.删除掉队列首部的元素
我们这个Queue类需要什么成员变量?
答案是: (维护)队列尾部结点、队列大小就够了。
我们来分析,尾部push数据的时候,我们只需要在myback和myback->next之间插入这个结点,然后把这个myback指向这个结点即可。取出和删除头部数据只需要对myback->next进行操作即可,复杂度是O(1),效率很高。
剩下的一些实现细节看我下面的代码实现:
//circle_list.h
#ifndef CIRCLE_LIST
#define CIRCLE_LIST
#include<iostream>
#include<string>
#include<cstring>
template <typename T>
class node//节点类
{
public:
T data;
node *next;
node(T da = 0, node *n = NULL) :da