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

📄 set.c

📁 Object-Oriented Programming With ANSI-C这本书中的源代码!找了很久
💻 C
字号:
#include <assert.h>#include <stdio.h>#include "new.h"#include "Set.h"#include "Object.h"const void * Set;const void * Object;#if ! defined MANY || MANY < 1#define	MANY	10#endifstatic int heap [MANY];void * new (const void * type, ...){	int * p;							/* & heap[1..] */	for (p = heap + 1; p < heap + MANY; ++ p)		if (! * p)			break;	assert(p < heap + MANY);	* p = MANY;	return p;}void delete (void * _item){	int * item = _item;	if (item)	{	assert(item > heap && item < heap + MANY);		* item = 0;	}}void * add (void * _set, const void * _element){	int * set = _set;	const int * element = _element;	assert(set > heap && set < heap + MANY);	assert(* set == MANY);	assert(element > heap && element < heap + MANY);	if (* element == MANY)		* (int *) element = set - heap;	else		assert(* element == set - heap);	return (void *) element;}void * find (const void * _set, const void * _element){	const int * set = _set;	const int * element = _element;	assert(set > heap && set < heap + MANY);	assert(* set == MANY);	assert(element > heap && element < heap + MANY);	assert(* element);	return * element == set - heap ? (void *) element : 0;}int contains (const void * _set, const void * _element){	return find(_set, _element) != 0;}void * drop (void * _set, const void * _element){	int * element = find(_set, _element);	if (element)		* element = MANY;	return element;}int differ (const void * a, const void * b){	return a != b;}

⌨️ 快捷键说明

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