source: git/factory/templates/ftmpl_list.h @ ddbd52

fieker-DuValspielwiese
Last change on this file since ddbd52 was 684544, checked in by Rüdiger Stobbe <stobbe@…>, 28 years ago
Initial revision git-svn-id: file:///usr/local/Singular/svn/trunk@7 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.4 KB
Line 
1// emacs edit mode for this file is -*- C++ -*-
2// $Id: ftmpl_list.h,v 1.0 1996-05-17 11:06:32 stobbe Exp $
3
4#ifndef INCL_LIST_H
5#define INCL_LIST_H
6
7/*
8$Log: not supported by cvs2svn $
9*/
10
11#include <iostream.h>
12
13
14template <class T>
15class ListItem
16{
17private:
18    ListItem * next;
19    ListItem * prev;
20    T * item;
21public:
22    ListItem( const ListItem<T>& );
23    ListItem( const T&, ListItem<T>*, ListItem<T>* );
24    ListItem( T* , ListItem<T>* , ListItem<T>* );
25    ~ListItem();
26    ListItem<T>& operator= ( const ListItem<T>& );
27    ListItem<T>* getNext();
28    ListItem<T>* getPrev();
29    T& getItem();
30    void print ( ostream& );
31    friend class ListIterator<T>;
32    friend class List<T>;
33};
34
35template <class T>
36class List
37{
38private:
39    ListItem<T> *first;
40    ListItem<T> *last;
41    int _length;
42public:
43    List();
44    List( const List<T>& );
45    List( const T& );
46    ~List();
47    List<T>& operator= ( const List<T>& );
48    void insert ( const T& );
49    void insert ( const T&, int (*cmpf)( const T&, const T& ) );
50    void insert ( const T&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
51    void append ( const T& );
52    int isEmpty() const;
53    int length() const;
54    T getFirst() const;
55    void removeFirst();
56    T getLast() const;
57    void removeLast();
58    void sort ( int (*) ( const T&, const T& ) );
59    void print ( ostream & ) const;
60    friend class ListIterator<T>;
61};
62
63template <class T>
64ostream& operator<<( ostream & os, const List<T> & l );
65
66template <class T>
67class ListIterator {
68private:
69    List<T> *theList;
70    ListItem<T> *current;
71public:
72    ListIterator();
73    ListIterator( const ListIterator<T>& );
74    ListIterator( const List<T>& );
75    ~ListIterator();
76    ListIterator<T>& operator = ( const ListIterator<T>& );
77    ListIterator<T>& operator = ( const List<T>& );
78    T& getItem() const;
79    int hasItem();
80    void operator++();
81    void operator--();
82    void operator++( int );
83    void operator--( int );
84    void firstItem();
85    void lastItem();
86    void insert( const T& );
87    void append( const T& );
88    void remove( int moveright );
89};
90
91template <class T>
92List<T> Union ( const List<T>&, const List<T>& );
93
94template <class T>
95List<T> Difference ( const List<T>&, const List<T>& );
96
97template <class T>
98List<T> Union ( const List<T>&, const List<T>&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
99
100template <class T>
101T prod ( const List<T>& );
102
103#endif /* INCL_LIST_H */
Note: See TracBrowser for help on using the repository browser.