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

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

?? queue.c

?? 《多任務下的數(shù)據(jù)結構》隨書的源代碼。探討多任務下的常用數(shù)據(jù)結構的實現(xiàn)
?? C
字號:
/*
 * Copyright (c) 2000-2008
 * Author: Weiming Zhou
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  
 */

#include <stdio.h>
#include <stdlib.h>
#include "CapiGlobal.h"
#include "Queue.h"


/**	隊列的創(chuàng)建函數(shù)

	@param	UINT uMaxCount - 隊列里的最大數(shù)據(jù)個數(shù)	
	@return	QUEUE * - 成功時返回創(chuàng)建的隊列指針,失敗返回NULL	
*/
QUEUE *	Queue_Create(UINT uMaxCount)
{
    QUEUE *pQueue;
    
    if ( uMaxCount < 2 ) /* 環(huán)形隊列大小必須大于等于2才能插入元素 */
    {
        return NULL;
    }
    
    pQueue = (QUEUE *)malloc(sizeof(struct QUEUE_st));
    if ( pQueue != NULL )
    {
        pQueue->ppData = (void **)malloc(uMaxCount * sizeof(void *));
        if ( pQueue->ppData != NULL )
        {
            /* memset( pQueue->ppData, 0, uMaxCount * sizeof(void *)); */
            pQueue->ppData[0] = NULL;
            pQueue->uMaxCount = uMaxCount;

            pQueue->uHead = 0;
            pQueue->uTail = 0;
        }
        else
        {
            free( pQueue );
            pQueue = NULL;
        }
    }
    return pQueue;
}


/**	隊列的釋放函數(shù),將隊列中剩余數(shù)據(jù)全部釋放掉及將隊列釋放掉

	@param	QUEUE *pQueue - 隊列指針	
	@param	DESTROYFUNC DestroyFunc - 數(shù)據(jù)釋放回調函數(shù)	
	@return	void - 無	
*/
void Queue_Destroy( QUEUE *pQueue, DESTROYFUNC DestroyFunc )
{
    UINT    i;
    
    if ( pQueue == NULL )
    {
        return;
    }

    if ( DestroyFunc != NULL )
    {
        if ( pQueue->uHead < pQueue->uTail )
        {
            for ( i = 0; i < pQueue->uTail; i++ )
            {
                (*DestroyFunc)( pQueue->ppData[i] );
            }
            for ( i = pQueue->uHead; i < pQueue->uMaxCount; i++ )
            {
                (*DestroyFunc)( pQueue->ppData[i] );
            }
        }
        else
        {
            for ( i = pQueue->uHead; i < pQueue->uTail; i++ )
            {
                (*DestroyFunc)( pQueue->ppData[i] );
            }
        }
    }

    free( pQueue->ppData );
    free( pQueue );
}


/**	插入數(shù)據(jù)到隊列的尾部的函數(shù)
	如果隊列已滿會自動將隊列空間擴大一倍再插入

	@param	QUEUE *pQueue - 隊列指針	
	@param	void *pData - 要插入的數(shù)據(jù)指針	
	@return	INT - CAPI_FAILED表示隊列已滿,申請不到內存將隊列再擴大,插入失敗。
                  CAPI_SUCCESS表示插入成功
*/
INT Queue_InsertTail( QUEUE *pQueue, void *pData )
{
    UINT    uTailNext;

    /* 求出尾部位置的下一個位置 */
    if ( pQueue->uTail == pQueue->uMaxCount - 1 )
    {
        /* 當?shù)搅藬?shù)組的最尾部時,下一個要從數(shù)組頭部重新計算 */
        uTailNext = 0;
    }
    else
    {
        uTailNext = pQueue->uTail + 1;
    }

    if ( uTailNext != pQueue->uHead ) /* 隊列未滿的情況 */
    {
        
        pQueue->ppData[pQueue->uTail] = pData;
        pQueue->uTail = uTailNext;
    }
    else /* 隊列為滿的情況 */
    {
		/* 將隊列空間擴大一倍 */       
		void **ppData = (void **)malloc(pQueue->uMaxCount * 2 * sizeof(void *)); 

		if ( ppData == NULL )
		{
			return CAPI_FAILED;
		}
		if ( pQueue->uHead > pQueue->uTail )
		{
			UINT i;
			/* 復制uHead和隊列最尾部間的數(shù)據(jù) */
			for ( i = pQueue->uHead; i < pQueue->uMaxCount; i++)
			{
				ppData[i] = pQueue->ppData[i];
			}
			/* 復制從0到uTail間的數(shù)據(jù) */
			for ( i = 0; i < pQueue->uTail; i++)
			{
				ppData[i + pQueue->uMaxCount] = pQueue->ppData[i];
			}
			pQueue->uTail += pQueue->uMaxCount;
		}
		else
		{
			UINT i;
			/* 復制從uHead到uTail間的數(shù)據(jù) */
			for ( i = pQueue->uHead; i < pQueue->uTail; i++)
			{
				ppData[i] = pQueue->ppData[i];
			}
		}
		/* 將輸入插入新分配的隊列空間中 */
        ppData[pQueue->uTail] = pData;
		pQueue->uTail += 1;
		
		pQueue->uMaxCount *= 2;
		free(pQueue->ppData);
		pQueue->ppData = ppData;
    }

	return CAPI_SUCCESS;
}


/**	隊列的彈出頭部數(shù)據(jù)函數(shù)

	@param	QUEUE *pQueue - 隊列指針	
	@return	void * - NULL表示隊列為空,否則返回彈出的頭部數(shù)據(jù)指針	
*/
void * Queue_PopHead(QUEUE *pQueue)
{
    UINT    uHead;

    uHead = pQueue->uHead;

    if ( uHead != pQueue->uTail )
    {
        /* 頭部和尾部沒有重合表示隊列不為空的情況 */
        if ( uHead == pQueue->uMaxCount - 1 )
        {
            pQueue->uHead = 0;
        }
        else
        {
            pQueue->uHead += 1;
        }

		return pQueue->ppData[uHead];
    }
	else
	{
		return NULL;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品一区二区三区免费视频| 中文字幕第一区| 亚洲成av人片在线观看无码| 日本韩国欧美在线| 亚洲国产综合在线| 91精品国产综合久久精品 | 欧美午夜精品理论片a级按摩| 综合色中文字幕| 欧美性高清videossexo| 五月激情六月综合| 欧美不卡视频一区| 国产黄色成人av| 亚洲三级在线观看| 欧美日韩美少妇| 国产综合色在线| 国产精品伦理一区二区| 色播五月激情综合网| 天天色综合天天| 国产女同互慰高潮91漫画| 91丨porny丨户外露出| 亚洲va在线va天堂| 久久亚洲精品小早川怜子| caoporn国产精品| 午夜欧美电影在线观看| 久久婷婷国产综合精品青草| 91黄视频在线| 久草这里只有精品视频| 亚洲婷婷综合久久一本伊一区| 6080yy午夜一二三区久久| 国产一区二区剧情av在线| 亚洲少妇30p| 欧美一级高清片| 91网站视频在线观看| 免费人成精品欧美精品| 国产精品美女久久久久久久久久久| 欧美三级视频在线观看| 久久er99热精品一区二区| 亚洲同性同志一二三专区| 日韩免费性生活视频播放| 色哟哟国产精品免费观看| 美女高潮久久久| 一区二区三区自拍| 久久久久久夜精品精品免费| 欧洲精品在线观看| 国产一区二区三区四区五区美女| 亚洲国产日韩a在线播放性色| 国产视频一区二区在线| 在线不卡中文字幕| 91小视频在线免费看| 国产精选一区二区三区| 日本亚洲电影天堂| 一区二区在线看| 国产精品久久久久一区| 337p粉嫩大胆噜噜噜噜噜91av| 精品视频999| 色哟哟亚洲精品| 99视频超级精品| 大胆亚洲人体视频| 久久91精品久久久久久秒播| 日日骚欧美日韩| 亚洲与欧洲av电影| 国产精品国产精品国产专区不片| 国产亚洲欧美在线| 日韩欧美国产一区在线观看| 67194成人在线观看| 欧美三级中文字幕| 在线免费观看一区| www.视频一区| 成人黄色a**站在线观看| 国产一区免费电影| 国产曰批免费观看久久久| 久久国产生活片100| 美腿丝袜亚洲三区| 蜜臀av一区二区在线观看| 日韩制服丝袜先锋影音| 视频一区二区国产| 丝袜脚交一区二区| 日韩高清在线观看| 日韩电影在线观看电影| 男男成人高潮片免费网站| 丝袜诱惑制服诱惑色一区在线观看 | 日韩精品在线一区二区| 欧美日韩国产片| 欧美一区二区三区免费大片| 欧美一区中文字幕| 日韩一区二区免费在线观看| 91精品免费观看| 日韩一区二区电影| 欧美草草影院在线视频| 久久久亚洲综合| 国产精品欧美经典| 中文字幕日韩欧美一区二区三区| 亚洲日本在线视频观看| 亚洲美女电影在线| 亚洲综合图片区| 日本不卡高清视频| 国产精品资源站在线| www.欧美日韩国产在线| 色婷婷久久综合| 91精品国产欧美日韩| 精品国产免费久久 | 99精品久久久久久| 欧美综合在线视频| 在线观看91精品国产麻豆| 日韩欧美亚洲一区二区| 久久久久久电影| 亚洲精选在线视频| 日韩中文字幕av电影| 国产一区二区看久久| 69成人精品免费视频| 久久国产剧场电影| 91高清在线观看| 美日韩一区二区三区| 美女mm1313爽爽久久久蜜臀| 成人av高清在线| 56国语精品自产拍在线观看| 久久久久久久久伊人| 亚洲视频在线一区二区| 日韩中文字幕区一区有砖一区| 国产在线精品不卡| 91国产福利在线| 久久久99免费| 亚洲精品成人在线| 看片的网站亚洲| 在线欧美日韩国产| 久久精品视频免费| 亚洲成人精品一区| 成人免费高清在线| 在线不卡一区二区| 成人欧美一区二区三区白人| 日本亚洲天堂网| 91久久精品日日躁夜夜躁欧美| 一区二区三区资源| 久久国产综合精品| 欧美亚洲动漫制服丝袜| 国产日韩欧美在线一区| 石原莉奈在线亚洲三区| 99精品偷自拍| 久久这里都是精品| 亚洲成人激情av| 色综合天天综合网天天看片| 久久精品日产第一区二区三区高清版| 性做久久久久久久久| voyeur盗摄精品| 国产亚洲成aⅴ人片在线观看| 日韩国产欧美三级| 在线亚洲精品福利网址导航| 国产精品素人视频| 激情五月激情综合网| 91.xcao| 一区二区视频在线看| 国产不卡高清在线观看视频| 精品国产一区二区三区av性色| 奇米四色…亚洲| 51精品秘密在线观看| 一区二区理论电影在线观看| 91香蕉视频mp4| 国产精品福利av| 国产成人av资源| 国产亚洲成av人在线观看导航| 久久超碰97中文字幕| 制服丝袜日韩国产| 午夜激情综合网| 欧美精品日韩一区| 亚洲影视在线播放| 欧洲av在线精品| 一区二区三区四区不卡在线| 色综合激情久久| 夜夜爽夜夜爽精品视频| 色综合一个色综合亚洲| 亚洲柠檬福利资源导航| 99久久精品免费看国产免费软件| 国产精品高清亚洲| av激情亚洲男人天堂| 亚洲欧美怡红院| 一本一道波多野结衣一区二区| 亚洲精品一二三| 欧洲一区在线电影| 性做久久久久久免费观看| 欧美日韩高清影院| 美女免费视频一区二区| 久久亚洲私人国产精品va媚药| 国产成人99久久亚洲综合精品| 中文字幕一区二区三区不卡在线| 色婷婷一区二区| 亚洲高清免费观看| 制服.丝袜.亚洲.中文.综合| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩精品一区二区在线| 国产精品自产自拍| 综合欧美一区二区三区| 欧美日韩中字一区| 久久精品999| 亚洲欧洲性图库| 欧美日韩精品电影| 激情小说欧美图片| 综合欧美一区二区三区| 欧美日韩一区二区三区四区 | 欧美国产精品一区| 91麻豆精品一区二区三区|