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

📄 slist.h

📁 This software was done in part for a textbook on AI I ve written called _The Basis of AI_ (tentative
💻 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 + -