用链表std::list实现队列

// generic queue implemented with doubly linked list 
#include<iostream>
#include<string>
#include <list>
using std::cout;
using std::endl;
using std::string;
template<class T>
class Queue {
public:
    Queue() { 
    }
    void clear() {
        lst.clear();
    }
    bool isEmpty() const { 
        return lst.empty();  
    }
    T& front() { 
        return lst.front();  
    }
    void enqueue(const T& el) {
        lst.push_back(el);
    }
    T dequeue() {
        T el = lst.front();
        lst.pop_front();
        return el;
    }
private:
    std::list<T> lst;
};
int main(){
    Queue<string> tque;
    tque.enqueue("you ");
    tque.enqueue("are ");
    tque.enqueue("a ");
    tque.enqueue("shining ");
    tque.enqueue("star.");
    while(!tque.isEmpty()){
        cout << tque.dequeue();
    }
    cout << endl;
    // A segmentation fault will happen.
    //cout << tque.dequeue();
}
时间: 2024-12-20 23:27:45

用链表std::list实现队列的相关文章

基础数据结构 链表、栈、队列

数据结构是程序设计中一个非常重要的部分,基本的数据结构包括链表.栈和队列,当然高级一点的还有树.图等,实际上链表.栈和队列都是线性表,只是在操作和表示方式上有所不同,线性表用顺序结构表示就是顺序表,用链结构表示就是链表,如果对线性表的操作加以限制,只能有在表尾进行插入和删除元素,这就变成栈了,如果只能允许元素从表尾插入,表头删除,这就变成队列了. 链表 /* * 数据结构 链表 * 链式结构 */ #include <iostream> using namespace std; enum St

图解堆算法、链表、栈与队列(Mark)

原文地址: 图解堆算法.链表.栈与队列(多图预警) 堆(heap),是一类特殊的数据结构的统称.它通常被看作一棵树的数组对象.在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间较短的任务却可能需要等待很长时间才能开始执行,或者某些不短小.但很重要的作业,同样应当拥有优先权.而堆就是为了解决此类问题而设计的数据结构.--

数据结构 数组,链表,栈,队列理解

数据结构 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.再简单描述一下:数据结构就是描述对象间逻辑关系的学科. 数据存储结构 常用的数据存储方式有两种:顺序存储,非顺序存储.顺序存储就是把数据存储在一块联系的存储介质(硬盘或内存等)中.反之则是非顺序存储. Java中的数组就是典型的顺序存储,链表就是非顺序存储.数组存储数据时会开辟出一块联系内存,按顺序存储.链表先不会开辟出一块内存来,而是只需要知道下一个节点存储的位置,就能把所以的数据连起来了.所以单向链表的最后一个节点是指向N

【万字总结】图解堆算法、链表、栈与队列(多图预警)

转自:http://blog.csdn.net/nomasp/article/details/50349172 堆算法 什么是堆 堆(heap),是一类特殊的数据结构的统称.它通常被看作一棵树的数组对象.在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间较短的任务却可能需要等待很长时间才能开始执行,或者某些不短小.但很重要的作业,同样应当拥有优先权.而堆就是为了解决此类问题而设计的数据结构. 二叉堆是一种特殊的堆,二叉堆是完全二叉树或者近似完全二叉树,二叉堆满足堆特性:父

分别用数组和链表实现栈和队列

2015.2.8星期二,晴天 栈的数组操作: 栈的特点:先进后出,后进先出. 用数组的方式实现:首先需要创建一个结构体,在结构体里面包括数据指针.指向栈顶的”指针“和标记栈的大小的一个变量.数据指针是指向一定大小的数组的首地址.结构体和这个数组够成一个完整的栈. 1.在创建栈的操作中,主要就是创建这个结构体和这个数组,并对其进行一定的初始化,这个操作和链表的创建比较类似,初始化的语句:stack->max_depth = max_depth; //说明栈的大小stack->pop = -1;

算法导论10:栈链表的简化、队列的数组实现 2016.1.10

新年的前十天做了比较有意义的事情就是坚持每天写博客,明天就开始期末考试了,所以等假期再继续学习. 把昨天提到的S.bottom简化之后又改了栈的链表.代码如下(已折叠): #include<stdio.h> #include<stdlib.h> typedef struct _node{ int num; struct _node *next; }node; node *s; void build(node *&S) { s=(node *)malloc(sizeof(no

数据结构之链表、栈和队列 java代码实现

定义抽象节点类Node: 1 package cn.wzbrilliant.datastructure; 2 3 /** 4 * 节点 5 * @author ice 6 * 7 */ 8 public abstract class Node { 9 private Node next; 10 11 public Node(){ 12 next=null; 13 } 14 15 public void setNext(Node nextNode){ 16 next=nextNode; 17 }

Java用链表实现栈和队列

1.用链表实现栈 package stack; /** * * @author denghb * */ class Link { public long dData; public Link next; public Link(long dd) { dData = dd; } public void displayLink() { System.out.print(dData + " "); } } class LinkList { private Link first; public

[笔记]python数据结构之线性表:linkedlist链表,stack栈,queue队列

python数据结构之线性表 python内置了很多高级数据结构,list,dict,tuple,string,set等,在使用的时候十分舒心.但是,如果从一个初学者的角度利用python学习数据结构时,这些高级的数据结构可能给我们以迷惑. 比如,使用list实现queue的时候,入队操作append()时间复杂度可以认为是O(1),但是,出队操作pop(0)的时间复杂度就是O(n). 如果是想利用python学学数据结构的话,我觉得还是自己实现一遍基本的数据结构为好. 1.链表 在这里,我想使