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

📄 list.h

📁 [Game.Programming].Academic - Graphics Gems (6 books source code)
💻 H
字号:
// -*- C++ -*-// list.h by George Vanecek Jr. June 1994#ifndef _LIST_H_#define _LIST_H_#ifndef __STDLIB_H__#include <stdlib.h>#endif#ifndef _BASIC_H_#include "basic.h"#endifclass ListNode {public:  ListNode( void* const t, ListNode* const n ) : val(t), nxt(n) {}  void*          value ( ) const { return val; }  ListNode*      next  ( ) { return nxt; }  void* operator new   ( size_t );  void  operator delete( void* );  private:  void* const val;  ListNode*   nxt;  static ListNode* freeList;};template <class T>class List {public:  List( ) : anchor(NULL), nNodes(0) { }  Boolean   empty      ( ) const { return Boolean( anchor == NULL ); }  T*        first      ( ) const { return (T*)(anchor->value()); }  ListNode* head       ( ) const { return anchor; }  Counter   size       ( ) const { return nNodes; }  void      operator <<( T* const ); // insert (i.e. push)  Boolean   operator >>( T*& );	     // remove (i.e. pop)private:  ListNode* anchor;		// Start of List  Counter   nNodes;		// Number of Nodes on list};template <class T>void List<T>::operator <<( T* const t ){  anchor = new ListNode( t, anchor );  ++nNodes;}template <class T>Boolean List<T>::operator >>( T*& t ){  if( empty() ) {    t = NULL;    return FALSE;  }  t = first();  ListNode* f = anchor;  anchor = f->next();  delete f;  --nNodes;  return TRUE;}#define forEachItemOnList(p) \     for( ListNode* pp = p.head(); pp != NULL; pp = pp->next() )#define getItem(Type) \     (Type*)(pp->value())#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -