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

📄 sets.c

📁 这是一个Linux下的集成开发环境
💻 C
📖 第 1 页 / 共 2 页
字号:
      rSet->FirstElmt = Min (rSet->FirstElmt, rElmt);      rSet->LastElmt  = Max (rSet->LastElmt , rElmt);   }void Exclude#if defined __STDC__ | defined __cplusplus   (tSet * Set, int Elmt)#else   (Set, Elmt) tSet * Set; int Elmt;#endif   {      register tSet *	rSet	= Set;      register int	rElmt	= Elmt;      rSet->BitsetPtr [rElmt / BitsPerBitset] &=	 ~ (1L << (rElmt & MaskBitsPerBitset));      rSet->Card = NoCard;      if (rElmt == rSet->FirstElmt && rElmt < rSet->MaxElmt) rSet->FirstElmt ++;      if (rElmt == rSet->LastElmt && rElmt > 0) rSet->LastElmt --;   }int Card#if defined __STDC__ | defined __cplusplus   (tSet * Set)#else   (Set) tSet * Set;#endif   {      register tSet * rSet = Set;      if (rSet->Card == NoCard) {	 register int i, n;	 register int last = rSet->LastElmt;	 n = 0;	 for (i = rSet->FirstElmt; i <= last; i ++) {	    if (IsElement (i, rSet)) n ++;	 }	 rSet->Card = n;      }      return rSet->Card;   }    int Minimum#if defined __STDC__ | defined __cplusplus   (tSet * Set)#else   (Set) tSet * Set;#endif   {      register tSet *	rSet	= Set;      register int	i;      register int	last	= rSet->LastElmt;      for (i = rSet->FirstElmt; i <= last; i ++) {	 if (IsElement (i, rSet)) {	    rSet->FirstElmt = i;	    return i;	 }      }      return 0;   }    int Maximum#if defined __STDC__ | defined __cplusplus   (tSet * Set)#else   (Set) tSet * Set;#endif   {      register tSet *	rSet	= Set;      register int	i;      register int	first	= rSet->FirstElmt;      for (i = rSet->LastElmt; i >= first; i --) {	 if (IsElement (i, rSet)) {	    rSet->LastElmt = i;	    return i;	 }      }      return 0;   }    int Extract#if defined __STDC__ | defined __cplusplus   (tSet * Set)#else   (Set) tSet * Set;#endif   {      register int i = Minimum (Set);      Exclude (Set, i);      return i;   }rbool IsSubset#if defined __STDC__ | defined __cplusplus   (tSet * Set1, tSet * Set2)#else   (Set1, Set2) tSet * Set1; tSet * Set2;#endif   {      register tSet *	rSet1	= Set1;      register int	i 	= rSet1->LastBitset + 1;      register BITSET *	s1	= rSet1->BitsetPtr;      register BITSET *	s2	= Set2->BitsetPtr;      do {	 if (* s1 ++ & ~ * s2 ++) return rfalse;      } while (-- i);      return rtrue;   }rbool IsEqual#if defined __STDC__ | defined __cplusplus   (tSet * Set1, tSet * Set2)#else   (Set1, Set2) tSet * Set1; tSet * Set2;#endif   {      register tSet *	rSet1	= Set1;      register int	i 	= rSet1->LastBitset + 1;      register BITSET *	s1	= rSet1->BitsetPtr;      register BITSET *	s2	= Set2->BitsetPtr;      do {	 if (* s1 ++ != * s2 ++) return rfalse;      } while (-- i);      return rtrue;   }    rbool IsEmpty#if defined __STDC__ | defined __cplusplus   (tSet * Set)#else   (Set) tSet * Set;#endif   {      register tSet * rSet = Set;      if (rSet->FirstElmt <= rSet->LastElmt) {	 register int i  = rSet->LastBitset + 1;	 register BITSET * s1 = rSet->BitsetPtr;	 do {	    if (* s1 ++ != 0) return rfalse;	 } while (-- i);      }      return rtrue;   }    rbool Forall#if defined __STDC__ | defined __cplusplus   (tSet * Set, rbool (* Proc) (int))#else   (Set, Proc) tSet * Set; rbool (* Proc) ();#endif   {      register tSet *	rSet	= Set;      register int	i;      register int	last	= rSet->LastElmt;      for (i = rSet->FirstElmt; i <= last; i ++) {	 if (IsElement (i, rSet) && ! CALL(Proc) (i)) return rfalse;      }      return rtrue;   }    rbool Exists#if defined __STDC__ | defined __cplusplus   (tSet * Set, rbool (* Proc) (int))#else   (Set, Proc) tSet * Set; rbool (* Proc) ();#endif   {      register tSet *	rSet	= Set;      register int	i;      register int	last	= rSet->LastElmt;      for (i = rSet->FirstElmt; i <= last; i ++) {	 if (IsElement (i, rSet) && CALL(Proc) (i)) return rtrue;      }      return rfalse;   }    rbool Exists1#if defined __STDC__ | defined __cplusplus   (tSet * Set, rbool (* Proc) (int))#else   (Set, Proc) tSet * Set; rbool (* Proc) ();#endif   {      register tSet *	rSet	= Set;      register int	i, n;      register int	last	= rSet->LastElmt;      n = 0;      for (i = rSet->FirstElmt; i <= last; i ++) {	 if (IsElement (i, rSet) && CALL(Proc) (i)) n ++;      }      return n == 1;   }void Assign#if defined __STDC__ | defined __cplusplus   (tSet * Set1, tSet * Set2)#else   (Set1, Set2) tSet * Set1; tSet * Set2;#endif   {      register tSet *	rSet1	= Set1;      register int	i 	= rSet1->LastBitset + 1;      register BITSET *	s1	= rSet1->BitsetPtr;      register BITSET *	s2	= Set2->BitsetPtr;      register tSet *	rSet2	= Set2;      do {* s1 ++ = * s2 ++;} while (-- i);      rSet1->Card      = rSet2->Card;      rSet1->FirstElmt = rSet2->FirstElmt;      rSet1->LastElmt  = rSet2->LastElmt;   }void AssignElmt#if defined __STDC__ | defined __cplusplus   (tSet * Set, int Elmt)#else   (Set, Elmt) tSet * Set; int Elmt;#endif   {      register tSet *	rSet	= Set;      register int	rElmt	= Elmt;      AssignEmpty (rSet);      Include (rSet, rElmt);      rSet->Card      = 1;      rSet->FirstElmt = rElmt;      rSet->LastElmt  = rElmt;   }void AssignEmpty#if defined __STDC__ | defined __cplusplus   (tSet * Set)#else   (Set) tSet * Set;#endif   {      register tSet *	rSet	= Set;      register int	i 	= rSet->LastBitset + 1;      register BITSET *	s1	= rSet->BitsetPtr;      do {* s1 ++ = 0;} while (-- i);      rSet->Card      = 0;      rSet->FirstElmt = rSet->MaxElmt;      rSet->LastElmt  = 0;   }void ForallDo#if defined __STDC__ | defined __cplusplus   (tSet * Set, void (* Proc) (int))#else   (Set, Proc) tSet * Set; void (* Proc) ();#endif   {      register tSet *	rSet	= Set;      register int	i;      register int	last	= rSet->LastElmt;      for (i = rSet->FirstElmt; i <= last; i ++) {	 if (IsElement (i, rSet)) CALL(Proc) (i);      }   }void ReadSet#if defined __STDC__ | defined __cplusplus   (FILE * File, tSet * Set)#else   (File, Set) FILE * File; tSet * Set;#endif   {#ifndef _USRDLL      register tSet * rSet = Set;      long i; int card = 0;      while (fgetc (File) != '{');      AssignEmpty (rSet);      for (;;) {	 if (fgetc (File) == '}') break;	 (void) fscanf (File, "%ld", & i);	 Include (rSet, (short) i);	 card ++;      }      rSet->Card = card;#endif   }static FILE * g;void PrintElmt#if defined __STDC__ | defined __cplusplus   (int Elmt)#else   (Elmt) int Elmt;#endif   {      (void) fprintf (g, " %d", Elmt);   }void WriteSet#if defined __STDC__ | defined __cplusplus   (FILE * File, tSet * Set)#else   (File, Set) FILE * File; tSet * Set;#endif   {      g = File;      (void) fprintf (File, "{");      ForallDo (Set, PrintElmt);      (void) fprintf (File, "}");   }void InitSets#if defined __STDC__ | defined __cplusplus   (void)#else   ()#endif   {   }

⌨️ 快捷键说明

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