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

📄 list.cpp

📁 《c++ 实践之路》光盘中的源代码
💻 CPP
字号:
#include "List.h"
#include <iostream>
// Bartosz Milewski (c) 2000

List::Free List::Link::_freeList;

List::List ()
	: _pHead (0)
{}

List::~List ()
{
	while ( _pHead != 0 )
	{
		Link * pLink = _pHead;
		_pHead = _pHead->Next (); // unlink pLink
		delete pLink;
	}
}

void List::Add (int value)
{
	Link * pLink = new Link (_pHead, value);
	_pHead = pLink;
}

void * List::Free::NewLink ()
{
	if (_p != 0)
	{
		void * mem = _p;
		_p = _p->_pNext;
		std::cout << "Allocation from free list\n";
		return mem;
	}
	else
	{
		// use global operator new
		std::cout << "Allocation using new\n";
		return ::new char [sizeof (Link)];
	}
}

void List::Free::Recycle (void * mem)
{
	Link * link = static_cast<Link *> (mem);
	link->_pNext = _p;
	_p = link;
}

List::Free::~Free ()
{
	Purge ();
}

void List::Free::Purge ()
{
	while (_p != 0)
	{
		// it was allocated as an array of char
		char * mem = reinterpret_cast<char *> (_p);
		_p = _p->Next();
		::delete [] mem;
	}
}

⌨️ 快捷键说明

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