036
15.07.2003, 12:00 Uhr
0xdeadbeef
Gott (Operator)
|
Wenn du schon ne verkettete Liste selbst coden willst, dann wenigstens mit Stil. Das bedeutet: Doppelt verkettete Dummy-Liste, etwa so:
C++: |
class IntListNode { friend class IntList;
private: int cnt; IntListNode *prev, *next;
IntListNode() : prev(this), next(this), cnt(0) { } IntListNode(int newcnt, IntListNode *newnext) : cnt(newcnt), next(newnext) { if(!next || !next.prev) throw newnext; prev = next.prev; next.prev = prev.next = this; } };
class IntList { private: IntListNode *head_dummy, *tail_dummy; int size;
public: IntList() : head(IntListNode()), tail(IntListNode()), size(0) { head_dummy.next = tail_dummy; //dummys initialisieren tail_dummy.prev = head_dummy; }
void append(int i) { IntListNode(i, tail_dummy); ++size; } void insert(int i, int pos) { IntListNode *ptr = head_dummy; while(pos-- > 0) ptr = ptr.next; //wenn ptr bei tail ankommt, ist ptr.next == ptr IntListNode(i, ptr.next); ++size; }
//und so weiter. };
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 15.07.2003 um 12:00 Uhr von 0xdeadbeef editiert. |