Changeset 124 for abuse/trunk/src/isllist.hpp
- Timestamp:
- Mar 18, 2008, 9:36:56 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
abuse/trunk/src/isllist.hpp
r57 r124 22 22 list_node * next; 23 23 T data; 24 24 25 25 list_node() {} 26 26 list_node(const T& item) { data = item; } 27 27 }; 28 28 29 29 list_node * list; 30 30 … … 36 36 iterator(list_node * p) : node(p) {} 37 37 38 38 iterator() {} 39 39 iterator(const iterator &p) : node(p.node) {} 40 40 41 41 int operator==(const iterator &p) { return (node == p.node); } 42 42 int operator!=(const iterator &p) { return (node != p.node); } 43 43 44 44 iterator& operator++() { node = node->next; return *this; } 45 45 iterator next() { return node->next; } 46 46 47 47 T& operator*() { return node->data; } 48 48 }; 49 49 50 50 iterator end() { return (list_node *)(&list); } 51 51 iterator begin_prev() { return end(); } 52 52 iterator begin() { return list; } 53 53 54 54 int empty() { return begin() == end(); } 55 55 56 56 iterator insert_next(iterator pos, T& item) 57 57 { … … 59 59 p->next = pos.node->next; 60 60 pos.node->next = p; 61 62 return p; 61 62 return p; 63 63 } 64 64 65 65 void erase_next(iterator pos) 66 66 { … … 69 69 delete p; 70 70 } 71 71 72 72 int find_prev(iterator& p, T& item) 73 73 { … … 80 80 return 0; 81 81 } 82 82 83 83 void move_next(const iterator&p, const iterator&q) 84 84 { 85 85 list_node * tmp; 86 86 87 87 tmp = p.node->next; 88 88 if (tmp == q.node) … … 92 92 q.node->next = tmp; 93 93 } 94 94 95 95 int find(T& item) { iterator p = begin_prev(); return find_prev(p, item); } 96 96 void insert(T& item) { insert_next( begin_prev(), item); } … … 102 102 erase(); 103 103 } 104 104 105 105 isllist() 106 106 { 107 107 list = (list_node *)&list; 108 108 } 109 109 110 110 ~isllist() 111 111 {
Note: See TracChangeset
for help on using the changeset viewer.