/* Steven Andrews, 4/20/95, modified 9/98 */ /* Performs basic set operations with a linked list */ /* dictionary commands completed 5/12/95 */ /* See documentation called Set doc */ /* Copyright 2003 by Steven Andrews. Permission is granted for non-commercial use of and modifications to the code. */ #ifndef __Set_h #define __Set_h struct scell{ void *key; void *item; struct scell *next; }; typedef struct sstruct{ struct scell *list; int (*keycmp)(void *,void *); int (*itemcmp)(void *,void *); } *set; set SetAlloc(int (*keycmp)(void *,void *),int (*itemcmp)(void *,void *)); void SetFree(set s,int freek,int freex); void SetNull(set s,int freek,int freex); int SetInsert(void *k,void *x,set s); int SetDelete(void *k,void *x,set s,int freek,int freex); int SetMember(void *k,void *x,set s); void *SetItem(void *k,set s); void **SetItemAt(void *k,set s); void *SetKey(void *x,set s); struct scell *SetNext(struct scell *ptr,void **k,void **x,set s); int Subset(set s1,set s2); int SetEqual(set s1,set s2); set SetUnion(set s1,set s2); set SetIntersect(set s1,set s2); set SetDiff(set s1,set s2); int SetCard(set s); #endif