?? slist.h
字號:
/*******************************************************************************++ LEDA 3.5+++ slist.h+++ Copyright (c) 1995, 1996, 1997 by LEDA Software GmbH+ Postfach 151101, 66041 Saarbruecken, Germany+ All rights reserved.+ *******************************************************************************/#ifndef LEDA_IMPL_SLIST_H#define LEDA_IMPL_SLIST_H//------------------------------------------------------------------------------// simply linked lists//------------------------------------------------------------------------------#include <LEDA/basic.h>class SLIST; class slink;typedef slink* slist_item;//------------------------------------------------------------------------------// class slink //------------------------------------------------------------------------------class __exportC slink { friend class __exportC SLIST; slink* succ; GenPtr e; slink(GenPtr a, slink* suc) { e = a; succ = suc; } LEDA_MEMORY(slink)};//------------------------------------------------------------------------------// SLIST: base class for all simply linked Lists//------------------------------------------------------------------------------class __exportC SLIST { slink* h; //head slink* t; //tail int count; //length of Listvirtual void clear_el(GenPtr&) const {}virtual void copy_el(GenPtr&) const {}virtual int el_type_id() const { return UNKNOWN_TYPE_ID; }public: int space() const { return sizeof(SLIST) + count * sizeof(slink); } int length() const { return count; } bool empty() const { return (count==0);} slink* insert(GenPtr, slink*); slink* push(GenPtr a) { count++; h = new slink(a,h); if (t==0) t = h; return h; } slink* append(GenPtr a) { count++; if (t) t = t->succ = new slink(a,0); else t = h = new slink(a,0); return t; } slink* first() const { return h; } slink* first_item() const { return h; } slink* last() const { return t; } slink* last_item() const { return t; } slink* next_item(slink* p) const { return p ? p->succ : 0; } slink* succ(slink* l) const { return l->succ; } slink* cyclic_succ(slink*) const; void conc(SLIST&); GenPtr head() const { return h ? h->e : 0;} GenPtr tail() const { return t ? t->e : 0;} GenPtr pop(); void del_succ(slink* p) { slink* q = p->succ; if (q == t) t = p; p->succ = q->succ; delete q; count--; } GenPtr contents(slink* l) const { return l->e; } GenPtr& entry(slink* l) { return l->e; } GenPtr& operator[](slink* l) { return l->e; } GenPtr operator[](slink* l) const { return l->e; } void clear(); SLIST(); SLIST(GenPtr a); SLIST& operator=(const SLIST&); SLIST(const SLIST&); virtual ~SLIST() { clear(); }};#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -