`

链式队列

阅读更多
LinkedQueue.h
#ifndef LINKEDQUEUE_H
#define LINKEDQUEUE_H

#include<iostream>
#include"../T2/LinkedList.h"
#include"Queue.h"
using namespace std;

template<typename T>
class LinkedQueue:public Queue<T>{
public:
    LinkedQueue():rear(NULL),front(NULL){}
    ~LinkedQueue(){makeEmpty();}
    bool EnQueue(const T &x);
    bool DeQueue(T &x);
    bool getFront(T &x);
    void makeEmpty();
    bool IsEmpty() const;
    bool IsFull() const{return false;}
    int getSize() const;
    friend ostream& operator<<(ostream& os,LinkedQueue& queue){
        LinkNode<T> *current = queue.front;
        while(NULL!=current){
            os << current->data << " ";
            current = current->link;
        }
        os << endl;
        return os;
    }
protected:
    LinkNode<T> *front,*rear;
};
#endif // LINKEDQUEUE_H


LinkedQueue.cpp
#include"LinkedQueue.h"

template<typename T>
bool LinkedQueue<T>::EnQueue(const T &x)
{
    if(IsEmpty()){
        front = rear = new LinkNode<T>(x);
        if(NULL==front)
            return false;
    }else{
        rear->link = new LinkNode<T>(x);
        if(NULL==rear->link)
            return false;
        rear = rear->link;
    }
    return true;
}

template<typename T>
bool LinkedQueue<T>::DeQueue(T &x)
{
    if(IsEmpty()){
        return false;
    }
    LinkNode<T>* del = front;
    x = del->data;
    front = front->link;
    delete del;
    return true;
}

template<typename T>
bool LinkedQueue<T>::getFront(T &x)
{
    if(IsEmpty()){
        return false;
    }
    x = front->data;
    return true;
}

template<typename T>
void LinkedQueue<T>::makeEmpty()
{
    LinkNode<T> *del;
    while(front!=NULL){
        del = front;
        front = front->link;
        delete del;
    }
}

template<typename T>
bool LinkedQueue<T>::IsEmpty() const
{
    return front==NULL?true:false;
}

template<typename T>
int LinkedQueue<T>::getSize() const
{
    LinkNode<T> *current = front;
    int i = 0;
    while(NULL!=current){
        i++;
        current = current->link;
    }
    return i;
}

int main()
{
    LinkedQueue<int> queue;
    int num=0;
    for(int i=0;i<10;++i){
        num++;
        queue.EnQueue(num);
    }
    cout << queue;
    for(int j=1;j<5;++j){
        queue.DeQueue(num);
    }
    cout << queue;
    queue.getFront(num);
    cout << "front:" << num << ",size:" << queue.getSize() << endl;
}

1 2 3 4 5 6 7 8 9 10 
5 6 7 8 9 10 
front:5,size:6
分享到:
评论

相关推荐

    链式队列的基本运算

    链式队列是一种在计算机科学中广泛使用的数据结构,它基于链表实现,与传统的数组队列相比,具有更大的灵活性。在本程序中,我们主要关注链式队列的六个核心操作,这些操作对于理解和应用链式队列至关重要。 1. **...

    c语言 链式队列的实现

    链式队列是一种数据结构,它是队列的一种特殊形式,主要使用链表来存储队列中的元素。在C语言中,链式队列的实现通常涉及结构体的定义、节点的创建与销毁、以及一系列针对队列操作的函数。下面我们将深入探讨链式...

    C++数据结构之链式队列实现

    链式队列是一种基于链表的数据结构,常用于实现队列这种先进先出(FIFO,First In First Out)的数据组织方式。在C++中,链式队列可以通过定义一个节点类来存储队列中的元素,并通过头节点和尾节点来追踪队列的状态...

    数据结构 链式队列

    链式队列是一种在计算机科学中广泛使用的数据结构,它属于线性数据结构的一种,用于实现队列这种抽象数据类型。在链式队列中,元素的存储位置不连续,而是通过指针链接起来,这使得插入和删除操作更加灵活。下面我们...

    链式队列的实现

    该文件实现链式队列功能,包含队列的创建queucreat、入队add与出队output,并通过打印显示函数的执行效果。

    顺序队列和链式队列的实现

    顺序队列和链式队列的实现 在计算机科学中,队列是一种重要的数据结构,广泛应用于多种领域。在本节中,我们将讨论顺序队列和链式队列的实现。 顺序队列 顺序队列是一种基于数组的队列实现方式。其主要特点是使用...

    C语言实现链式队列

    链式队列

    数据结构--链式队列

    数据结构在计算机科学中扮演着至关重要的角色,而链式队列作为一种常用的数据结构,它在处理大量数据的入队和出队操作时表现出高效性。本篇文章将深入探讨链式队列的实现,以及与之相关的编程概念和技术。 首先,...

    链式队列的表示和实现源码

    链式队列是一种数据结构,它是队列的一种特殊形式,主要特点是使用链表来存储队列中的元素。在计算机科学中,队列是一种先进先出(First In First Out,简称FIFO)的数据结构,用于模拟各种排队现象。下面将详细讨论...

    严蔚敏-数据结构--链式队列c++实现

    链式队列是一种在计算机科学中广泛使用的数据结构,它以链表为基础,实现了队列“先进先出”(FIFO)的原则。在C++中实现链式队列,可以让我们更加灵活地处理数据,特别是在处理大量数据或者需要动态扩展容量的场景...

    java队列实现(顺序队列、链式队列、循环队列)

    在Java中,队列的实现主要有三种:顺序队列、链式队列和循环队列。下面我们将详细探讨这三种队列的实现方式。 1. **顺序队列**: 顺序队列通常是基于数组实现的。在Java中,我们可以使用ArrayList或LinkedList来...

    数据结构链式队列程序

    在本项目中,“数据结构链式队列程序”是一个用C++语言实现的队列数据结构实例,它通过链表来存储元素,具有高效插入和删除操作的能力。 链式队列相比于数组实现的队列,其优势在于动态扩展性。数组队列在预先分配...

    链式队列C实现

    链式队列是一种数据结构,它是队列的一种实现方式,主要特点是使用链表来存储队列中的元素。在计算机科学中,队列是一种先进先出(First In First Out, FIFO)的数据结构,常用于处理一系列待处理的任务或事件。与...

    链式队列实现例子

    JAVA语言实现数据的链式结构 分享下挣挣人气

    c++模板类实现的链式队列

    "C++模板类实现的链式队列" 本篇文章将详细介绍C++模板类实现的链式队列,包括队列的链式存储结构、队列类的设计、函数实现等方面的知识点。 一、队列的链式存储结构 在C++中,队列可以使用链式存储结构来实现。...

    数据结构-链式队列

    链式队列是一种在计算机科学中用于数据组织和操作的数据结构,它在概念上类似于现实生活中的排队等待。链式队列是数据结构课程中的一个重要概念,尤其对于学习C语言和其他编程语言的学生来说,理解并能实际操作链式...

    c\c++链式队列 源代码

    链式队列是一种数据结构,它是队列的一种实现方式,主要用在计算机科学的数据处理中。与传统的数组实现的顺序队列不同,链式队列使用链表来存储元素,这样可以更灵活地处理动态变化的容量需求。下面将详细阐述链式...

    链式队列()

    链式队列是一种在计算机科学中广泛使用的数据结构,它属于线性数据结构的一种,主要用于存储和处理一系列有序的数据元素。与传统的数组实现的顺序队列不同,链式队列利用链表作为底层数据结构,这使得在进行插入和...

    duilie.rar_链式队列

    链式队列是一种数据结构,它是队列的一种特殊形式,主要特点是利用链式存储结构来实现元素的存储。与顺序队列(数组实现)不同,链式队列在添加和删除元素时不需要考虑数组扩容或缩容的问题,具有更高的灵活性。在本...

Global site tag (gtag.js) - Google Analytics