⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list.h

📁 常用数据结构集体实现
💻 H
字号:
#ifndef LIST_H_#define LIST_H_#include <stdlib.h>#include "StartConv.h"// Incomplete class declarations for// the const_iterator, iterator, and list,// because all these classes refer to each other.template <class Object>class ConstListItr;template <class Object>class ListItr;template <class Object>class list;// The basic doubly linked list node.// Everything is private, and is accessible// only by the iterators and list classes.template <class Object>class ListNode{    Object     data;    ListNode  *prev;    ListNode  *next;    ListNode( const Object & d = Object( ),              ListNode * p = NULL, ListNode * n = NULL )      : data( d ), prev( p ), next( n ) { }    friend class ConstListItr<Object>;    friend class ListItr<Object>;    friend class list<Object>;};template <class Object>class list{  public:    typedef ListItr<Object>      iterator;    typedef ConstListItr<Object> const_iterator;    list( );    ~list( );    list( const list & rhs );    const list & operator= ( const list & rhs );    iterator begin( );    const_iterator begin( ) const;    iterator end( );    const_iterator end( ) const;    int size( ) const;    bool empty( ) const;           Object & front( );    const Object & front( ) const;    Object & back( );    const Object & back( ) const;    void push_front( const Object & x );    void push_back( const Object & x );    void pop_front( );    void pop_back( );    iterator insert( iterator itr, const Object & x );    iterator erase( iterator itr );    iterator erase( iterator start, iterator end );    friend class ConstListItr<Object>;    friend class ListItr<Object>;  private:    typedef ListNode<Object> node;    int   theSize;    node *head;    node *tail;    void init( );    void makeEmpty( );};template <class Object>class ConstListItr{  public:    ConstListItr( );    virtual ~ConstListItr( ) { }    virtual const Object & operator* ( ) const;        ConstListItr & operator++ ( );    ConstListItr operator++ ( int );    ConstListItr & operator-- ( );    ConstListItr operator-- ( int );            bool operator== ( const ConstListItr & rhs ) const;    bool operator!= ( const ConstListItr & rhs ) const;  protected:    typedef ListNode<Object> node;    node *head;    node *current;    friend class list<Object>;    void assertIsInitialized( ) const;    void assertIsValid( ) const;    void assertCanAdvance( ) const;    void assertCanRetreat( ) const;    Object & retrieve( ) const;    ConstListItr( const list<Object> & source, node *p );};template <class Object>class ListItr : public ConstListItr<Object>{  public:    ListItr( );    Object & operator* ( );    const Object & operator* ( ) const;        ListItr & operator++ ( );    ListItr operator++ ( int );    ListItr & operator-- ( );    ListItr operator-- ( int );  protected:    typedef ListNode<Object> node;    friend class list<Object>;    ListItr( const list<Object> & source, node *p );};#include "EndConv.h"#include "list.cpp"#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -