亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? set.c

?? compiler
?? C
?? 第 1 頁 / 共 2 頁
字號:
    /* Performs binary operations depending on op:
     *
     * _UNION:        dest = union of src and dest
     * _INTERSECT:    dest = intersection of src and dest
     * _DIFFERENCE:   dest = symmetric difference of src and dest
     * _ASSIGN:       dest = src;
     *
     * The sizes of the destination set is adjusted so that it's the same size
     * as the source set.
     */

    _SETTYPE	*d;	/* Pointer to destination map	*/
    _SETTYPE	*s;	/* Pointer to map in set1	*/
    int		ssize;	/* # of words in src set	*/
    int		tail;	/* dest set is this much bigger */

    ssize = src->nwords ;

    if( (unsigned)dest->nwords < ssize ) /* Make sure dest set is at least */
	enlarge( ssize, dest );		 /* as big as the src set.	   */

    tail  = dest->nwords - ssize ;
    d     = dest->map ;
    s     = src ->map ;

    switch( op )
    {
    case _UNION:      while( --ssize >= 0 )
			    *d++ |= *s++ ;
		      break;
    case _INTERSECT:  while( --ssize >= 0 )
			    *d++ &= *s++ ;
		      while( --tail >= 0 )
			    *d++ = 0;
		      break;
    case _DIFFERENCE: while( --ssize >= 0 )
			    *d++ ^= *s++ ;
		      break;
    case _ASSIGN:     while( --ssize >= 0 )
			    *d++  = *s++ ;
		      while( --tail >= 0 )
			    *d++ = 0;
		      break;
    }
}

/* ------------------------------------------------------------------- */

PUBLIC void	invert( set )
SET	*set;
{
    /* Physically invert the bits in the set. Compare with the COMPLEMENT()
     * macro, which just modifies the complement bit.
     */

    _SETTYPE *p, *end ;

    for( p = set->map, end = p + set->nwords ; p < end ; p++ )
	*p = ~*p;
}

/* ------------------------------------------------------------------- */

PUBLIC void	truncate( set )
SET	*set;
{
    /* Clears the set but also set's it back to the original, default size.
     * Compare this routine to the CLEAR() macro which clears all the bits in
     * the map but doesn't modify the size.
     */

    if( set->map != set->defmap )
    {
	free( set->map );
	set->map = set->defmap;
    }
    set->nwords = _DEFWORDS;
    set->nbits  = _DEFBITS;
    memset( set->defmap, 0, sizeof(set->defmap) );
}

PUBLIC int	next_member( set )
SET	*set;
{
    /* set == NULL			Reset
     * set changed from last call:	Reset and return first element
     * otherwise			return next element or -1 if none.
     */

    static SET	*oset 	       = NULL;	/* "set" arg in last call 	    */
    static int	current_member = 0;	/* last-accessed member of cur. set */
    _SETTYPE    *map;

    if( !set )
	return( (int)( oset = NULL ) );

    if( oset != set )
    {
	oset           = set;
	current_member = 0 ;

	for(map = set->map; *map == 0  &&  current_member < set->nbits; ++map)
	    current_member += _BITS_IN_WORD;
    }

    /* The increment must be put into the test because, if the TEST() invocation
     * evaluates true, then an increment on the right of a for() statement
     * would never be executed.
     */

    while( current_member++ < set->nbits )
	if( TEST(set, current_member-1) )
	    return( current_member-1 );
    return( -1 );
}

/* ------------------------------------------------------------------- */

PUBLIC void	pset( set, output_routine, param )
SET	*set;
pset_t	output_routine;
void	*param;
{
    /* Print the contents of the set bit map in human-readable form. The
     * output routine is called for each element of the set with the following
     * arguments:
     *
     * (*out)( param, "null",    -1);	Null set ("set" arg == NULL)
     * (*out)( param, "empty",   -2);	Empty set (no elements)
     * (*out)( param, "%d ",      N);	N is an element of the set
     */

    int	i, did_something = 0;

    if( !set )
	(*output_routine)( param, "null", -1 );
    else
    {
	next_member( NULL );
	while( (i = next_member(set))  >= 0 )
	{
	    did_something++;
	    ( *output_routine )( param, "%d ", i  );
	}
	next_member( NULL );

	if( !did_something )
	    ( *output_routine )(param, "empty",  -2 );
    }
}
#ifdef MAIN

scmp(a,b) SET **a, **b; { return setcmp(*a,*b); }

main()
{
    int i;
    SET *s1 = newset();
    SET *s2 = newset();
    SET *s3 = newset();
    SET *s4 = newset();
    SET *a[ 40 ];

    printf("adding 1024 and 2047 to s1: ");
    ADD(  s2,1024);
    ADD(  s2,2047);
    pset( s2, (pset_t) fprintf, stdout );
    printf("removing 1024 and 2047: ");
    REMOVE(  s2, 1024);
    REMOVE(  s2, 2047);
    pset( s2, (pset_t) fprintf, stdout );

    /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

    for( i = 0; i <= 1024 ; ++i )
    {
	ADD( s1, i );
	if( !TEST(s1,i) || !MEMBER(s1,i) )
	    printf("initial: <%d> not in set and it should be\n", i);
    }
    for( i = 0; i <= 1024 ; ++i )
    {
	/* Make a second pass to see if a previous ADD messed
	 * up an already-added element.
	 */

	if( !TEST(s1,i) || !MEMBER(s1,i) )
	    printf("verify:  <%d> not in set and it should be\n", i);
    }
    for( i = 0; i <= 1024 ; ++i )
    {
	REMOVE( s1, i );
	if( TEST(s1,i) || MEMBER(s1,i) )
	    printf("initial: <%d> is in set and it shouldn't be\n", i);
    }
    for( i = 0; i <= 1024 ; ++i )
    {
	if( TEST(s1,i) || MEMBER(s1,i) )
	    printf("verify:  <%d> is in set and it shouldn't be\n", i);
    }

    printf("Add test finished: malloc set\n" );

    /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

    truncate(s1);

    printf(  IS_EQUIVALENT(s1,s2) ? "yeah!\n" : "boo\n" );

    ADD( s1, 1 );
    ADD( s2, 1 );
    ADD( s3, 1 );
    ADD( s1, 517 );
    ADD( s2, 517 );

    printf(  IS_EQUIVALENT(s1,s2) ? "yeah!\n" : "boo\n" );

    REMOVE( s2, 517 );

    printf( !IS_EQUIVALENT(s1,s2) ? "yeah!\n" : "boo\n" );
    printf( !IS_EQUIVALENT(s2,s1) ? "yeah!\n" : "boo\n" );
    printf( !IS_EQUIVALENT(s1,s3) ? "yeah!\n" : "boo\n" );
    printf(  IS_EQUIVALENT(s3,s2) ? "yeah!\n" : "boo\n" );
    printf(  IS_EQUIVALENT(s2,s3) ? "yeah!\n" : "boo\n" );

    /*-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  */

    ADD(s1, 3);
    ADD(s1, 6);
    ADD(s1, 9);
    ADD(s1, 12);
    ADD(s1, 15);
    ADD(s1, 16);
    ADD(s1, 19);
    ADD(s3, 18);

    printf(   "s1=" );  pset( s1, (pset_t) fprintf, stdout );
    printf( "\ns2=" );  pset( s2, (pset_t) fprintf, stdout );
    printf( "\ns3=" );  pset( s3, (pset_t) fprintf, stdout );
    printf( "\ns4=" );  pset( s4, (pset_t) fprintf, stdout );
    printf( "\n"    );
    printf("s1 has %d elements\n", num_ele( s1 ) );
    printf("s2 has %d elements\n", num_ele( s2 ) );
    printf("s3 has %d elements\n", num_ele( s3 ) );
    printf("s4 has %d elements\n", num_ele( s4 ) );

    s2 = dupset( s1 );
    printf( IS_EQUIVALENT(s2,s1)? "dupset succeeded\n" : "dupset failed\n");

    printf( "\ns1 %s empty\n", IS_EMPTY(s1) ? "IS" : "IS NOT" );
    printf( "s3 %s empty\n",   IS_EMPTY(s3) ? "IS" : "IS NOT" );
    printf( "s4 %s empty\n",   IS_EMPTY(s4) ? "IS" : "IS NOT" );

    printf("s1&s3 %s disjoint\n", IS_DISJOINT    (s1,s3) ? "ARE":"ARE NOT");
    printf("s1&s4 %s disjoint\n", IS_DISJOINT    (s1,s4) ? "ARE":"ARE NOT");

    printf("s1&s3 %s intersect\n",IS_INTERSECTING(s1,s3) ? "DO" : "DO NOT");
    printf("s1&s4 %s intersect\n",IS_INTERSECTING(s1,s4) ? "DO" : "DO NOT");

    printf("s1 %s a subset of s1\n", subset(s1,s1) ? "IS" : "IS NOT" );
    printf("s3 %s a subset of s3\n", subset(s3,s3) ? "IS" : "IS NOT" );
    printf("s4 %s a subset of s4\n", subset(s4,s4) ? "IS" : "IS NOT" );
    printf("s1 %s a subset of s3\n", subset(s3,s1) ? "IS" : "IS NOT" );
    printf("s1 %s a subset of s4\n", subset(s4,s1) ? "IS" : "IS NOT" );
    printf("s3 %s a subset of s1\n", subset(s1,s3) ? "IS" : "IS NOT" );
    printf("s3 %s a subset of s4\n", subset(s4,s3) ? "IS" : "IS NOT" );
    printf("s4 %s a subset of s1\n", subset(s1,s4) ? "IS" : "IS NOT" );
    printf("s4 %s a subset of s3\n", subset(s3,s4) ? "IS" : "IS NOT" );

    printf("\nAdding 18 to s1:\n");
    ADD(s1, 18);
    printf("s1 %s a subset of s1\n", subset(s1,s1) ? "IS" : "IS NOT" );
    printf("s3 %s a subset of s3\n", subset(s3,s3) ? "IS" : "IS NOT" );
    printf("s1 %s a subset of s3\n", subset(s3,s1) ? "IS" : "IS NOT" );
    printf("s3 %s a subset of s1\n", subset(s1,s3) ? "IS" : "IS NOT" );

    ASSIGN(s2,s3); puts("\ns3       =");
    pset(s2, (pset_t) fprintf, stdout );
    ASSIGN(s2,s3); UNION(s2,s1); puts("\ns1 UNI s3=");
    pset(s2, (pset_t) fprintf, stdout );
    ASSIGN(s2,s3); INTERSECT(s2,s1); puts("\ns1 INT s3=");
    pset(s2, (pset_t) fprintf, stdout );
    ASSIGN(s2,s3); DIFFERENCE(s2,s1); puts("\ns1 DIF s3=");
    pset(s2, (pset_t) fprintf, stdout );


    truncate( s2 );
    printf("s2 has%s been emptied\n", IS_EMPTY(s2) ? "" : " NOT" );

    invert( s2 ); printf("\ns2 inverted = "); pset(s2,(pset_t) fprintf,stdout);
    CLEAR ( s2 ); printf("\ns2 cleared  = "); pset(s2,(pset_t) fprintf,stdout);
    FILL  ( s2 ); printf("\ns2 filled   = "); pset(s2,(pset_t) fprintf,stdout);

    printf("\ns1="); pset( s1, (pset_t) fprintf, stdout );
    printf("\ns3="); pset( s3, (pset_t) fprintf, stdout );
    printf("\ns4="); pset( s4, (pset_t) fprintf, stdout );
    printf("\n");

    /* -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - */

    for( i = 40 ; --i >= 0; )
    {
	a[i] = newset();
	ADD( a[i], i % 20 );
    }

    ADD( a[0],  418 ); REMOVE( a[0],  418 );
    ADD( a[10], 418 ); REMOVE( a[10], 418 );

    printf("\nUnsorted:\n");
    for( i = 0; i < 40; i++ )
    {
	printf( "Set %d: ", i );
	pset(a[i], (pset_t) fprintf, stdout );
	printf( i & 1 ? "\n" : "\t" );
    }

    ssort( a, 40, sizeof(a[0]), scmp );

    printf("\nSorted:\n");
    for( i = 0; i < 40; i++ )
    {
	printf("Set %d: ", i );
	pset(a[i], (pset_t) fprintf, stdout );
	printf( i & 1 ? "\n" : "\t" );
    }
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av一区二区| 在线欧美日韩精品| 99精品欧美一区二区三区综合在线| 色老头久久综合| 久久久欧美精品sm网站| 一区二区三区欧美在线观看| 国产在线精品免费av| 欧美精品一二三| 中文字幕日韩一区二区| 裸体在线国模精品偷拍| 欧美日韩卡一卡二| 亚洲人成在线观看一区二区| 国产高清成人在线| 日韩欧美的一区| 日韩av电影免费观看高清完整版 | 日韩伦理免费电影| 韩国精品久久久| 日韩欧美国产小视频| 图片区小说区区亚洲影院| 色综合久久中文综合久久牛| 国产片一区二区| 国产精品亚洲第一区在线暖暖韩国| 欧美一区二区视频免费观看| 亚洲高清免费视频| 欧美日韩成人激情| 香蕉影视欧美成人| 欧洲一区在线观看| 亚洲影院理伦片| 欧美性三三影院| 亚洲国产欧美在线人成| 欧美在线免费视屏| 亚洲成人精品影院| 欧美精品久久久久久久久老牛影院| 亚洲永久精品国产| 欧美日产在线观看| 麻豆精品在线看| 久久久91精品国产一区二区三区| 精品在线一区二区| 国产婷婷色一区二区三区四区 | 亚洲成人一区二区在线观看| 在线观看视频一区| 无码av免费一区二区三区试看| 欧美精品日日鲁夜夜添| 麻豆一区二区三区| 欧美极品另类videosde| 91视频一区二区三区| 一区二区三区四区亚洲| 欧美区在线观看| 精品一区二区在线播放| 久久精品欧美一区二区三区麻豆| 成人激情午夜影院| 亚洲黄色小视频| 欧美日韩国产高清一区二区三区| 日韩激情中文字幕| 久久精品亚洲一区二区三区浴池 | 日本vs亚洲vs韩国一区三区| 日韩一级完整毛片| 丁香桃色午夜亚洲一区二区三区| 亚洲图片另类小说| 91精品国产综合久久久久久久久久| 蜜桃一区二区三区在线| 国产精品乱码一区二区三区软件| 色94色欧美sute亚洲线路二| 麻豆精品国产传媒mv男同| 国产偷v国产偷v亚洲高清| 在线一区二区三区四区| 捆绑紧缚一区二区三区视频| 国产精品美日韩| 欧美日韩国产小视频| 国产v日产∨综合v精品视频| 亚洲一区二区三区美女| 国产亚洲综合av| 7777精品伊人久久久大香线蕉 | 精品乱人伦小说| 99re8在线精品视频免费播放| 日韩精彩视频在线观看| 国产精品美女久久久久aⅴ国产馆| 欧美三级电影在线看| 成人午夜视频网站| 日本三级亚洲精品| 午夜成人免费视频| 中文字幕精品—区二区四季| 欧美日韩www| 一本色道久久综合亚洲91 | 亚洲国产精品久久艾草纯爱| 久久综合网色—综合色88| 在线观看日韩精品| 成人avav在线| 国产老肥熟一区二区三区| 日韩中文字幕一区二区三区| 中文字幕制服丝袜一区二区三区| 精品日本一线二线三线不卡| 在线精品观看国产| 91丨国产丨九色丨pron| 国产馆精品极品| 麻豆成人av在线| 日本美女一区二区三区| 亚洲一二三四在线| 中文字幕日韩精品一区| 中文字幕免费一区| 久久久不卡影院| 久久综合久久综合亚洲| 宅男噜噜噜66一区二区66| 在线观看日韩高清av| 91久久奴性调教| 91蝌蚪porny九色| 91天堂素人约啪| 91免费看视频| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美精品一区二区三区蜜桃 | 99国内精品久久| 高清不卡一区二区在线| 国产精品影视在线观看| 国产综合久久久久影院| 久久国产精品99久久久久久老狼| 日本特黄久久久高潮| 蜜桃av一区二区| 麻豆成人免费电影| 激情av综合网| 高清久久久久久| 99热这里都是精品| 91福利在线观看| 欧美三级电影在线观看| 制服丝袜激情欧洲亚洲| 91精品国产色综合久久不卡电影 | 成人激情动漫在线观看| caoporn国产精品| 91免费看`日韩一区二区| 在线一区二区三区四区| 欧美情侣在线播放| 欧美一区二区日韩| 久久久亚洲综合| 综合婷婷亚洲小说| 亚洲超丰满肉感bbw| 久久99久久99小草精品免视看| 国产在线精品免费| 99久久精品国产一区二区三区| 色一情一伦一子一伦一区| 欧美精品v国产精品v日韩精品| 日韩亚洲欧美中文三级| 国产欧美精品一区aⅴ影院| 最近中文字幕一区二区三区| 亚洲成人免费看| 国产精品一线二线三线精华| 99久久精品费精品国产一区二区| 色综合天天综合在线视频| 777久久久精品| 国产精品久久久久久久第一福利| 亚洲一区二区av在线| 国产在线不卡一卡二卡三卡四卡| gogo大胆日本视频一区| 91精品福利在线一区二区三区| 久久影院午夜片一区| 亚洲精品国产无套在线观| 麻豆国产精品一区二区三区| caoporn国产精品| 日韩免费看网站| 亚洲老司机在线| 欧美一二区视频| 亚洲欧美中日韩| 老司机精品视频线观看86| 97aⅴ精品视频一二三区| 日韩一区国产二区欧美三区| 亚洲欧洲日韩综合一区二区| 老司机一区二区| 欧美日韩在线播放一区| 欧美高清在线精品一区| 免播放器亚洲一区| 欧美视频一区在线观看| 国产精品伦一区二区三级视频| 日韩av不卡在线观看| 在线观看中文字幕不卡| 国产精品理伦片| 国产一区999| 日韩一级片在线观看| 亚洲一区在线播放| 91亚洲资源网| 国产精品久久久久永久免费观看| 久久精工是国产品牌吗| 欧美色男人天堂| 亚洲精品欧美专区| 成人久久18免费网站麻豆| 精品av久久707| 久色婷婷小香蕉久久| 欧美一区二区三区爱爱| 天天av天天翘天天综合网色鬼国产| 91丨九色丨国产丨porny| 国产精品乱子久久久久| 国产 欧美在线| 中文字幕乱码日本亚洲一区二区 | 三级亚洲高清视频| 色婷婷av一区二区三区软件| 国产精品乱人伦中文| 风流少妇一区二区| 欧美激情在线看| 国产精品一区不卡| 国产日本欧洲亚洲| 成人激情文学综合网| 亚洲欧洲韩国日本视频| 99久久夜色精品国产网站|