锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久热这里只精品99re8久,久久综合九色九九,国产精品久久久久久一区二区三区
http://www.shnenglu.com/zjj2816/category/2051.htmlzh-cn Tue, 20 May 2008 18:49:16 GMT Tue, 20 May 2008 18:49:16 GMT 60 qsort鍑芥暟搴旂敤澶у叏 涓冪qsort鎺掑簭鏂規硶 http://www.shnenglu.com/zjj2816/archive/2006/08/29/11816.html浜曟硥 浜曟硥 Tue, 29 Aug 2006 03:58:00 GMT http://www.shnenglu.com/zjj2816/archive/2006/08/29/11816.html http://www.shnenglu.com/zjj2816/comments/11816.html http://www.shnenglu.com/zjj2816/archive/2006/08/29/11816.html#Feedback 0 http://www.shnenglu.com/zjj2816/comments/commentRss/11816.html http://www.shnenglu.com/zjj2816/services/trackbacks/11816.html 涓銆佸int綾誨瀷鏁扮粍鎺掑簭 int num[100]; Sample: int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(num[0]),cmp); 浜屻佸char綾誨瀷鏁扮粍鎺掑簭錛堝悓int綾誨瀷錛? char word[100]; Sample: int cmp( const void *a , const void *b ) { return *(char *)a - *(int *)b; } qsort(word,100,sizeof(word[0]),cmp); 涓夈佸double綾誨瀷鏁扮粍鎺掑簭錛堢壒鍒娉ㄦ剰錛? double in[100]; int cmp( const void *a , const void *b ) { return *(double *)a > *(double *)b ? 1 : -1; } qsort(in,100,sizeof(in[0]),cmp)錛? 鍥涖佸緇撴瀯浣撲竴綰ф帓搴? struct In { double data; int other; }s[100] //鎸夌収data鐨勫間粠灝忓埌澶у皢緇撴瀯浣撴帓搴?鍏充簬緇撴瀯浣撳唴鐨勬帓搴忓叧閿暟鎹甦ata鐨勭被鍨嬪彲浠ュ緢澶氱錛屽弬鑰冧笂闈㈢殑渚嬪瓙鍐? int cmp( const void *a ,const void *B) { return (*(In *)a)->data > (*(In *)B)->data ? 1 : -1; } qsort(s,100,sizeof(s[0]),cmp); 浜斻佸緇撴瀯浣撲簩綰ф帓搴? struct In { int x; int y; }s[100]; //鎸夌収x浠庡皬鍒板ぇ鎺掑簭錛屽綋x鐩哥瓑鏃舵寜鐓浠庡ぇ鍒板皬鎺掑簭 int cmp( const void *a , const void *b ) { struct In *c = (In *)a; struct In *d = (In *)b; if(c->x != d->x) return c->x - d->x; else return d->y - c->y; } qsort(s,100,sizeof(s[0]),cmp); 鍏佸瀛楃涓茶繘琛屾帓搴? struct In { int data; char str[100]; }s[100]; //鎸夌収緇撴瀯浣撲腑瀛楃涓瞫tr鐨勫瓧鍏擱『搴忔帓搴? int cmp ( const void *a , const void *b ) { return strcmp( (*(In *)a)->str , (*(In *)B)->str ); } qsort(s,100,sizeof(s[0]),cmp); 涓冦佽綆楀嚑浣曚腑姹傚嚫鍖呯殑cmp int cmp(const void *a,const void *B) //閲嶇偣cmp鍑芥暟錛屾妸闄や簡1鐐瑰鐨勬墍鏈夌偣錛屾棆杞搴︽帓搴? { struct point *c=(point *)a; struct point *d=(point *)b; if( calc(*c,*d,p[1]) < 0) return 1; else if( !calc(*c,*d,p[1]) && dis(c->x,c->y,p[1].x,p[1].y) < dis(d->x,d->y,p[1].x,p[1].y)) //濡傛灉鍦ㄤ竴鏉$洿綰夸笂錛屽垯鎶婅繙鐨勬斁鍦ㄥ墠闈? return 1; else return -1; } PS: 鍏朵腑鐨剄sort鍑芥暟鍖呭惈鍦?lt;stdlib.h>鐨勫ご鏂囦歡閲岋紝strcmp鍖呭惈鍦?lt;string.h>鐨勫ご鏂囦歡閲?img src ="http://www.shnenglu.com/zjj2816/aggbug/11816.html" width = "1" height = "1" /> ]]>鍦?C/C++ 涓浣曟瀯閫犻氱敤鐨勫璞¢摼琛?/title> http://www.shnenglu.com/zjj2816/archive/2006/06/26/9034.html浜曟硥 浜曟硥 Mon, 26 Jun 2006 11:37:00 GMT http://www.shnenglu.com/zjj2816/archive/2006/06/26/9034.html http://www.shnenglu.com/zjj2816/comments/9034.html http://www.shnenglu.com/zjj2816/archive/2006/06/26/9034.html#Feedback 0 http://www.shnenglu.com/zjj2816/comments/commentRss/9034.html http://www.shnenglu.com/zjj2816/services/trackbacks/9034.html 閾捐〃鐨勯毦鐐瑰湪浜庡繀欏誨鍒墮摼琛ㄥ鐞嗗嚱鏁版潵澶勭悊涓嶅悓鐨勫璞★紝鍗充究閫昏緫鏄畬鍏ㄧ浉鍚岀殑銆備緥濡備袱涓粨鏋勭被浼肩殑閾捐〃:struct Struct_Object_A
銆銆{
銆銆銆銆int a;
銆銆銆銆int b;
銆銆銆銆Struct_Object_A *next;
銆銆
銆銆} OBJECT_A;
銆銆
銆銆typedef struct Struct_Object_B
銆銆{
銆銆銆銆int a;
銆銆銆銆int b;
銆銆銆銆int c;
銆銆銆銆Struct_Object_B *next;
銆銆
銆銆} OBJECT_B;銆
涓婇潰瀹氫箟鐨勪袱涓粨鏋勫彧鏈夊緢灝忕殑涓鐐瑰樊鍒侽BJECT_B 鍜?OBJECT_A 涔嬮棿鍙樊涓涓暣鍨嬪彉閲忋備絾鏄紝鍦ㄧ紪璇戝櫒鐪嬫潵錛屽畠浠粛鐒舵槸闈炲父涓嶅悓鐨勩傚繀欏諱負瀛樺偍鍦ㄩ摼琛ㄤ腑鐨勬瘡涓璞″鍒剁敤鏉ユ坊鍔犮佸垹闄ゅ拰鎼滅儲閾捐〃鐨勫嚱鏁般備負浜嗚В鍐寵繖涓棶棰橈紝鍙互浣跨敤鍏鋒湁鍏ㄩ儴涓変釜鍙橀噺鐨勪竴涓仈鍚堟垨緇撴瀯錛屽叾涓暣鏁?c 騫朵笉鏄湪鎵鏈夌殑鎯呭喌涓嬮兘瑕佷嬌鐢ㄣ傝繖鍙兘鍙樺緱闈炲父澶嶆潅錛屽茍浼氬艦鎴愪笉鑹殑緙栫▼椋庢牸銆?
C 浠g爜瑙e喅鏂規錛氳櫄鎷熼摼琛?
姝ら棶棰樻洿濂界殑瑙e喅鏂規涔嬩竴鏄櫄鎷熼摼琛ㄣ傝櫄鎷熼摼琛ㄦ槸鍙寘鍚摼琛ㄦ寚閽堢殑閾捐〃銆傚璞″瓨鍌ㄥ湪閾捐〃緇撴瀯鑳屽悗銆傝繖涓鐐規槸榪欐牱瀹炵幇鐨勶紝棣栧厛涓洪摼琛ㄨ妭鐐瑰垎閰嶅唴瀛橈紝鎺ョ潃涓哄璞″垎閰嶅唴瀛橈紝鐒跺悗灝嗚繖鍧楀唴瀛樺垎閰嶇粰閾捐〃鑺傜偣鎸囬拡錛屽涓嬫墍紺猴細
铏氭嫙閾捐〃緇撴瀯鐨勪竴縐嶅疄鐜?
typedef struct liststruct
銆銆{
銆銆銆銆liststruct *next;
銆銆
銆銆} LIST, *pLIST;
銆銆
銆銆pLIST Head = NULL;
銆銆
銆銆pLIST AddToList( pLIST Head,
void * data, size_t datasize )
銆銆{
銆銆pLIST newlist=NULL;
銆銆void *p;
銆銆
銆銆銆銆// 鍒嗛厤鑺傜偣鍐呭瓨鍜屾暟鎹唴瀛?
銆銆銆銆newlist = (pLIST) malloc
( datasize + sizeof( LIST ) );
銆銆
銆銆銆銆// 涓鴻繖鍧楁暟鎹紦鍐插尯鎸囧畾涓涓寚閽?
銆銆銆銆p = (void *)( newlist + 1 );
銆銆
銆銆銆銆// 澶嶅埗鏁版嵁
銆銆銆銆memcpy( p, data, datasize );
銆銆
銆銆銆銆// 灝嗚繖涓妭鐐規寚瀹氱粰閾捐〃鐨勮〃澶?
銆銆銆銆if( Head )
銆銆銆銆{
銆銆銆銆newlist->next = Head;
銆銆銆銆}
銆銆銆銆else
銆銆銆銆newlist->next = NULL;
銆銆
銆銆銆銆Head = newlist;
銆銆
銆銆銆銆return Head;
銆銆}銆銆
閾捐〃鑺傜偣鐜板湪寤虹珛鍦ㄦ暟鎹煎壇鏈殑鍩烘湰涔嬩笂銆傝繖涓増鏈兘寰堝ソ鍦板鐞嗘爣閲忓鹼紝浣嗕笉鑳藉鐞嗗甫鏈夌敤 malloc 鎴?new 鍒嗛厤鐨勫厓绱犵殑瀵硅薄銆傝澶勭悊榪欎簺瀵硅薄錛孡IST 緇撴瀯闇瑕佸寘鍚竴涓竴鑸殑瑙i櫎鍑芥暟鎸囬拡錛岃繖涓寚閽堝彲鐢ㄦ潵鍦ㄥ皢鑺傜偣浠庨摼琛ㄤ腑鍒犻櫎騫惰В闄ゅ畠涔嬪墠閲婃斁鍐呭瓨錛堟垨鑰呭叧闂枃浠訛紝鎴栬呰皟鐢ㄥ叧闂柟娉曪級銆?
涓涓甫鏈夎В闄ゅ嚱鏁扮殑閾捐〃
typedef void (*ListNodeDestructor)( void * );
銆銆
銆銆typedef struct liststruct
銆銆{
銆銆銆銆ListNodeDestructor DestructFunc;
銆銆銆銆liststruct *next;
銆銆
銆銆} LIST, *pLIST;
銆銆
銆銆pLIST AddToList( pLIST Head, void * data,
size_t datasize,
銆銆ListNodeDestructor Destructor )
銆銆{
銆銆pLIST newlist=NULL;
銆銆void *p;
銆銆
銆銆
銆銆銆銆// 鍒嗛厤鑺傜偣鍐呭瓨鍜屾暟鎹唴瀛?
銆銆銆銆newlist = (pLIST) malloc
( datasize + sizeof( LIST ) );
銆銆
銆銆銆銆// 涓鴻繖鍧楁暟鎹紦鍐插尯鎸囧畾涓涓寚閽?
銆銆銆銆p = (void *)( newlist + 1 );
銆銆
銆銆銆銆// 澶嶅埗鏁版嵁
銆銆銆銆memcpy( p, data, datasize );
銆銆
銆銆銆銆newlist->DestructFunc = Destructor;
銆銆銆銆
銆銆銆銆// 灝嗚繖涓妭鐐規寚瀹氱粰閾捐〃鐨勮〃澶?
銆銆銆銆if( Head )
銆銆銆銆{
銆銆銆銆銆銆newlist->next = Head;
銆銆銆銆}
銆銆銆銆else
銆銆銆銆銆銆newlist->next = NULL;
銆銆
銆銆銆銆Head = newlist;
銆銆
銆銆銆銆return Head;
銆銆}
銆銆
銆銆void DeleteList( pLIST Head )
銆銆{
銆銆銆銆pLIST Next;
銆銆銆銆while( Head )
銆銆銆銆{
銆銆銆銆銆銆Next = Head->next;
銆銆銆銆銆銆Head->DestructFunc(
(void *) Head );
銆銆銆銆銆銆free( Head );
銆銆銆銆銆銆Head = Next;
銆銆銆銆}
銆銆}
銆銆
銆銆typedef struct ListDataStruct
銆銆{
銆銆銆銆LPSTR p;
銆銆
銆銆} LIST_DATA, *pLIST_DATA;
銆銆
銆銆void ListDataDestructor( void *p )
銆銆{
銆銆銆銆// 瀵硅妭鐐規寚閽堣繘琛岀被鍨嬭漿鎹?
銆銆銆銆pLIST pl = (pLIST)p;
銆銆
銆銆銆銆// 瀵規暟鎹寚閽堣繘琛岀被鍨嬭漿鎹?
銆銆銆銆pLIST_DATA pLD = (pLIST_DATA)
( pl + 1 );
銆銆
銆銆銆銆delete pLD->p;
銆銆}
銆銆pLIST Head = NULL;
銆銆
銆銆void TestList()
銆銆{
銆銆銆銆pLIST_DATA d = new LIST_DATA;
銆銆銆銆d->p = new char[24];
銆銆銆銆strcpy( d->p, "Hello" );
銆銆銆銆Head = AddToList( Head, (void *) d,
sizeof( pLIST_DATA ),
銆銆銆銆ListDataDestructor );
銆銆銆銆// 璇ュ璞″凡琚鍒訛紝鐜板湪鍒犻櫎鍘熸潵鐨勫璞?
銆銆銆銆delete d;
銆銆
銆銆銆銆d = new LIST_DATA;
銆銆銆銆d->p = new char[24];
銆銆銆銆strcpy( d->p, "World" );
銆銆銆銆Head = AddToList( Head, (void *) d,
sizeof( pLIST_DATA ),
銆銆銆銆ListDataDestructor );
銆銆銆銆delete d;
銆銆
銆銆銆銆// 閲婃斁閾捐〃
銆銆銆銆DeleteList( Head );
銆銆}銆銆銆
鍦ㄦ瘡涓摼琛ㄨ妭鐐逛腑鍖呭惈鍚屼竴涓В闄ゅ嚱鏁扮殑鍚屼竴涓寚閽堜技涔庢槸嫻垂鍐呭瓨絀洪棿銆傜‘瀹炲姝わ紝浣嗗彧鏈夐摼琛ㄥ緇堝寘鍚浉鍚岀殑瀵硅薄鎵嶅睘浜庤繖縐嶆儏鍐點傛寜榪欑鏂瑰紡緙栧啓閾捐〃鍏佽鎮ㄥ皢浠諱綍瀵硅薄鏀懼湪閾捐〃涓殑浠諱綍浣嶇疆銆傚ぇ澶氭暟閾捐〃鍑芥暟瑕佹眰瀵硅薄鎬繪槸鐩稿悓鐨勭被鍨嬫垨綾匯?
铏氭嫙閾捐〃鍒欐棤姝よ姹傘傚畠鎵闇瑕佺殑鍙槸灝嗗璞″郊姝ゅ尯鍒嗗紑鐨勪竴縐嶆柟娉曘傝瀹炵幇榪欎竴鐐癸紝鎮ㄦ棦鍙互媯嫻嬭В闄ゅ嚱鏁版寚閽堢殑鍊鹼紝涔熷彲浠ュ湪閾捐〃涓墍鐢ㄧ殑鍏ㄩ儴緇撴瀯鍓嶆坊鍔犱竴涓被鍨嬪煎茍瀵瑰畠榪涜媯嫻嬨?
褰撶劧錛屽鏋滆灝嗛摼琛ㄧ紪鍐欎負涓涓?C++ 綾伙紝鍒欏鎸囧悜瑙i櫎鍑芥暟鐨勬寚閽堢殑璁劇疆鍜屽瓨鍌ㄥ彧鑳借繘琛屼竴嬈°?
C++ 瑙e喅鏂規錛氱被閾捐〃
鏈В鍐蟲柟妗堝皢 CList 綾誨畾涔変負浠?LIST 緇撴瀯瀵煎嚭鐨勪竴涓被錛屽畠閫氳繃瀛樺偍瑙i櫎鍑芥暟鐨勫崟涓兼潵澶勭悊鍗曚釜瀛樺偍綾誨瀷銆傝娉ㄦ剰娣誨姞鐨?GetCurrentData() 鍑芥暟錛岃鍑芥暟瀹屾垚浠庨摼琛ㄨ妭鐐規寚閽堝埌鏁版嵁鍋忕Щ鎸囬拡鐨勬暟瀛﹁漿鎹€備竴涓櫄鎷熼摼琛ㄥ璞?
// 瀹氫箟瑙i櫎鍑芥暟鎸囬拡
銆銆
銆銆typedef void (*ListNodeDestructor)
( void * );
銆銆
銆銆// 鏈坊鍔犺В闄ゅ嚱鏁版寚閽堢殑閾捐〃
銆銆
銆銆typedef struct ndliststruct
銆銆{
銆銆銆銆ndliststruct *next;
銆銆
銆銆} ND_LIST, *pND_LIST;
銆銆
銆銆// 瀹氫箟澶勭悊涓縐嶆暟鎹被鍨嬬殑閾捐〃綾?
銆銆
銆銆class CList : public ND_LIST
銆銆{
銆銆public:
銆銆銆銆CList(ListNodeDestructor);
銆銆銆銆~CList();
銆銆銆銆pND_LIST AddToList
( void * data, size_t datasize );
銆銆銆銆void *GetCurrentData();
銆銆銆銆void DeleteList( pND_LIST Head );
銆銆
銆銆
銆銆private:
銆銆銆銆pND_LIST m_HeadOfList;
銆銆銆銆pND_LIST m_CurrentNode;
銆銆銆銆ListNodeDestructor
m_DestructFunc;
銆銆};
銆銆
銆銆// 鐢ㄦ紜殑璧峰鍊兼瀯閫犺繖涓摼琛ㄥ璞?
銆銆
銆銆CList::CList(ListNodeDestructor Destructor)
銆銆銆銆: m_HeadOfList(NULL),
m_CurrentNode(NULL)
銆銆{
銆銆銆銆m_DestructFunc = Destructor;
銆銆}
銆銆
銆銆// 鍦ㄨВ闄ゅ璞′互鍚庡垹闄ら摼琛?
銆銆
銆銆CList::~CList()
銆銆{
銆銆銆銆DeleteList(m_HeadOfList);
銆銆}
銆銆
銆銆// 鍚戦摼琛ㄤ腑娣誨姞涓涓柊鑺傜偣
銆銆
銆銆pND_LIST CList::AddToList
( void * data, size_t datasize )
銆銆{
銆銆pND_LIST newlist=NULL;
銆銆void *p;
銆銆
銆銆
銆銆銆銆// 鍒嗛厤鑺傜偣鍐呭瓨鍜屾暟鎹唴瀛?
銆銆銆銆newlist = (pND_LIST) malloc
( datasize + sizeof( ND_LIST ) );
銆銆
銆銆銆銆// 涓鴻繖鍧楁暟鎹紦鍐插尯鎸囧畾涓涓寚閽?
銆銆銆銆p = (void *)( newlist + 1 );
銆銆
銆銆銆銆// 澶嶅埗鏁版嵁
銆銆銆銆memcpy( p, data, datasize );
銆銆
銆銆銆銆// 灝嗚繖涓妭鐐規寚瀹氱粰閾捐〃鐨勮〃澶?
銆銆銆銆if( m_HeadOfList )
銆銆銆銆{
銆銆銆銆銆銆newlist->next = m_HeadOfList;
銆銆銆銆}
銆銆銆銆else
銆銆銆銆銆銆newlist->next = NULL;
銆銆
銆銆銆銆m_HeadOfList = newlist;
銆銆
銆銆銆銆return m_HeadOfList;
銆銆}
銆銆
銆銆// 灝嗗綋鍓嶇殑鑺傜偣鏁版嵁浣滀負 void 綾誨瀷榪斿洖錛?
浠ヤ究璋冪敤鍑芥暟鑳藉灝嗗畠杞崲涓轟換浣曠被鍨?
銆銆
銆銆void * CList::GetCurrentData()
銆銆{
銆銆銆銆return (void *)(m_CurrentNode+1);
銆銆}
銆銆
銆銆// 鍒犻櫎宸插垎閰嶇殑閾捐〃
銆銆
銆銆void CList::DeleteList( pND_LIST Head )
銆銆{
銆銆銆銆pND_LIST Next;
銆銆銆銆while( Head )
銆銆銆銆{
銆銆銆銆銆銆Next = Head->next;
銆銆銆銆銆銆m_DestructFunc( (void *) Head );
銆銆銆銆銆銆free( Head );
銆銆銆銆銆銆Head = Next;
銆銆銆銆}
銆銆}
銆銆
銆銆// 鍒涘緩涓涓鍦ㄩ摼琛ㄤ腑鍒涘緩鍜屽瓨鍌ㄧ殑緇撴瀯
銆銆
銆銆typedef struct ListDataStruct
銆銆{
銆銆銆銆LPSTR p;
銆銆
銆銆} LIST_DATA, *pND_LIST_DATA;
銆銆
銆銆// 瀹氫箟鏍囧噯瑙i櫎鍑芥暟
銆銆
銆銆void ClassListDataDestructor( void *p )
銆銆{
銆銆銆銆// 瀵硅妭鐐規寚閽堣繘琛岀被鍨嬭漿鎹?
銆銆銆銆pND_LIST pl = (pND_LIST)p;
銆銆
銆銆銆銆// 瀵規暟鎹寚閽堣繘琛岀被鍨嬭漿鎹?
銆銆銆銆pND_LIST_DATA pLD = (pND_LIST_DATA)
( pl + 1 );
銆銆
銆銆銆銆delete pLD->p;
銆銆}
銆銆
銆銆// 嫻嬭瘯涓婇潰鐨勪唬鐮?
銆銆
銆銆void MyCListClassTest()
銆銆{
銆銆銆銆// 鍒涘緩閾捐〃綾?
銆銆
銆銆銆銆CList* pA_List_of_Data =
new CList(ClassListDataDestructor);
銆銆
銆銆銆銆// 鍒涘緩鏁版嵁瀵硅薄
銆銆銆銆
銆銆銆銆pND_LIST_DATA d = new LIST_DATA;
銆銆銆銆d->p = new char[24];
銆銆銆銆strcpy( d->p, "Hello" );
銆銆
銆銆銆銆// 鍒涘緩鎸囧悜閾捐〃欏墮儴鐨勫眬閮ㄦ寚閽?
銆銆
銆銆銆銆pND_LIST Head = NULL;
銆銆
銆銆銆銆//鍚戦摼琛ㄤ腑娣誨姞涓浜涙暟鎹?
銆銆
銆銆銆銆Head = pA_List_of_Data->AddToList
( (void *) d,
銆銆銆銆sizeof( pND_LIST_DATA ) );
銆銆銆銆// 璇ュ璞″凡琚鍒訛紝鐜板湪鍒犻櫎鍘熸潵鐨勫璞?
銆銆銆銆delete d;
銆銆
銆銆銆銆// 紜瀹冨凡琚瓨鍌?
銆銆銆銆char * p = ((pND_LIST_DATA) pA_List_of_Data->GetCurrentData())->p;
銆銆
銆銆銆銆d = new LIST_DATA;
銆銆銆銆d->p = new char[24];
銆銆銆銆strcpy( d->p, "World" );
銆銆銆銆Head = pA_List_of_Data->AddToList
( (void *) d, sizeof( pND_LIST_DATA ) );
銆銆銆銆// 璇ュ璞″凡琚鍒訛紝鐜板湪鍒犻櫎鍘熸潵鐨勫璞?
銆銆銆銆delete d;
銆銆
銆銆銆銆// 紜瀹冨凡琚瓨鍌?
銆銆銆銆p = ((pND_LIST_DATA)
pA_List_of_Data->GetCurrentData())->p;
銆銆
銆銆銆銆// 鍒犻櫎閾捐〃綾伙紝鏋愭瀯鍑芥暟灝嗗垹闄ら摼琛?
銆銆銆銆delete pA_List_of_Data;
銆銆}
銆銆
灝忕粨
浠庡墠闈㈢殑璁ㄨ鏉ョ湅錛屼技涔庝粎緙栧啓涓涓畝鍗曠殑閾捐〃灝辮鍋氬ぇ閲忕殑宸ヤ綔錛屼絾榪欏彧欏昏繘琛屼竴嬈°傚緢瀹規槗灝嗚繖孌典唬鐮佹墿鍏呬負涓涓鐞嗘帓搴忋佹悳绱互鍙婂悇縐嶅叾浠栦換鍔$殑 C++ 綾伙紝騫朵笖榪欎釜綾誨彲浠ュ鐞嗕換浣曟暟鎹璞℃垨綾伙紙鍦ㄤ竴涓」鐩腑錛屽畠澶勭悊澶х害浜屽崄涓笉鍚岀殑瀵硅薄錛夈傛偍姘歌繙涓嶅繀閲嶆柊緙栧啓榪欐浠g爜銆?/p>
]]> 闃熷垪 http://www.shnenglu.com/zjj2816/archive/2006/06/26/9033.html浜曟硥 浜曟硥 Mon, 26 Jun 2006 11:25:00 GMT http://www.shnenglu.com/zjj2816/archive/2006/06/26/9033.html http://www.shnenglu.com/zjj2816/comments/9033.html http://www.shnenglu.com/zjj2816/archive/2006/06/26/9033.html#Feedback 0 http://www.shnenglu.com/zjj2816/comments/commentRss/9033.html http://www.shnenglu.com/zjj2816/services/trackbacks/9033.html
闃熷垪
闇瑕侀槦鍒楁槸鍑轟簬涓や釜鍘熷洜銆傞鍏堬紝闇瑕侀槦鍒楁潵淇濆瓨宸ヤ綔浣滀笟銆傝繕闇瑕佸彲鐢ㄤ簬璺熻釜宸茬粓姝㈢嚎紼嬬殑鏁版嵁緇撴瀯銆傝繕璁板緱鍓嶅嚑綃囨枃绔狅紙璇峰弬闃呮湰鏂囩粨灝懼鐨?鍙傝冭祫鏂?/font> 錛変腑錛屾垜鏇炬彁鍒拌繃闇瑕佷嬌鐢ㄥ甫鏈夌壒瀹氳繘紼嬫爣璇嗙殑 pthread_join 鍚楋紵浣跨敤鈥滄竻闄ら槦鍒椻濓紙縐頒綔 "cq"錛夊彲浠ヨВ鍐蟲棤娉曠瓑寰?浠諱綍 宸茬粓姝㈢嚎紼嬬殑闂錛堢◢鍚庡皢璇︾粏璁ㄨ榪欎釜闂錛夈備互涓嬫槸鏍囧噯闃熷垪浠g爜銆傚皢姝や唬鐮佷繚瀛樺埌鏂囦歡 queue.h 鍜?queue.c錛?
queue.h
/* queue.h
** Copyright 2000 Daniel Robbins, Gentoo Technologies, Inc.
** Author: Daniel Robbins
** Date: 16 Jun 2000
*/
typedef struct node {
struct node *next;
} node;
typedef struct queue {
node *head, *tail;
} queue;
void queue_init(queue *myroot);
void queue_put(queue *myroot, node *mynode);
node *queue_get(queue *myroot);
queue.c
/* queue.c
** Copyright 2000 Daniel Robbins, Gentoo Technologies, Inc.
** Author: Daniel Robbins
** Date: 16 Jun 2000
**
** This set of queue functions was originally thread-aware. I
** redesigned the code to make this set of queue routines
** thread-ignorant (just a generic, boring yet very fast set of queue
** routines). Why the change? Because it makes more sense to have
** the thread support as an optional add-on. Consider a situation
** where you want to add 5 nodes to the queue. With the
** thread-enabled version, each call to queue_put() would
** automatically lock and unlock the queue mutex 5 times -- that's a
** lot of unnecessary overhead. However, by moving the thread stuff
** out of the queue routines, the caller can lock the mutex once at
** the beginning, then insert 5 items, and then unlock at the end.
** Moving the lock/unlock code out of the queue functions allows for
** optimizations that aren't possible otherwise. It also makes this
** code useful for non-threaded applications.
**
** We can easily thread-enable this data structure by using the
** data_control type defined in control.c and control.h. */
#include <stdio.h>
#include "queue.h"
void queue_init(queue *myroot) {
myroot->head=NULL;
myroot->tail=NULL;
}
void queue_put(queue *myroot,node *mynode) {
mynode->next=NULL;
if (myroot->tail!=NULL)
myroot->tail->next=mynode;
myroot->tail=mynode;
if (myroot->:head==NULL)
myroot->head=mynode;
}
node *queue_get(queue *myroot) {
//get from root
node *mynode;
mynode=myroot->head;
if (myroot->head!=NULL)
myroot->head=myroot->head->next;
return mynode;
}
]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
91久久国产综合久久91精品网站 |
亚洲国产精品成人综合 |
国产精品一二三四区 |
国产麻豆91精品 |
韩日午夜在线资源一区二区 |
在线精品国精品国产尤物884a |
亚洲国产精品va在看黑人 |
亚洲激情精品 |
亚洲自拍电影 |
麻豆成人在线观看 |
亚洲狠狠丁香婷婷综合久久久 |
日韩亚洲欧美高清 |
欧美在线播放一区二区 |
欧美高清在线视频 |
国产精品色婷婷 |
亚洲黄色在线观看 |
亚洲欧洲av一区二区 |
久久裸体艺术 |
在线视频中文亚洲 |
久久亚洲私人国产精品va媚药
|
欧美在线关看 |
欧美黑人在线播放 |
中文日韩欧美 |
欧美伦理在线观看 |
韩国亚洲精品 |
午夜精品99久久免费 |
欧美成人四级电影 |
午夜久久99 |
国产精品美女999 |
亚洲麻豆av |
另类欧美日韩国产在线 |
国产精品99久久久久久有的能看 |
久久综合99re88久久爱 |
国产在线欧美 |
久久av资源网站 |
亚洲性感美女99在线 |
欧美久久电影 |
亚洲日本va在线观看 |
卡通动漫国产精品 |
翔田千里一区二区 |
国产精品女人网站 |
亚洲专区在线 |
一区二区三区三区在线 |
欧美日韩国产综合网 |
亚洲精品免费在线 |
欧美寡妇偷汉性猛交 |
欧美一区深夜视频 |
国产日韩欧美亚洲 |
亚洲男人影院 |
亚洲一区二区三区午夜 |
国产精品美女在线观看 |
亚洲天堂免费观看 |
日韩天堂av |
欧美色精品在线视频 |
亚洲午夜成aⅴ人片 |
日韩视频一区二区三区在线播放免费观看 |
鲁大师成人一区二区三区 |
在线免费不卡视频 |
亚洲第一在线视频 |
欧美裸体一区二区三区 |
中文精品视频一区二区在线观看 |
亚洲精品一区二区三区蜜桃久 |
欧美人与性动交a欧美精品 |
亚洲精品小视频 |
亚洲美女在线看 |
欧美色欧美亚洲另类七区 |
亚洲欧美另类在线观看 |
欧美亚洲三区 |
亚洲承认在线 |
亚洲日韩第九十九页 |
欧美日韩伦理在线免费 |
午夜精彩视频在线观看不卡 |
久久国产精品久久w女人spa |
最新日韩在线视频 |
99热免费精品 |
国产午夜精品美女视频明星a级 |
久久一二三国产 |
你懂的国产精品 |
亚洲欧美精品伊人久久 |
久久成人精品无人区 |
亚洲精品一区在线 |
亚洲午夜性刺激影院 |
在线观看av一区 |
亚洲深夜av |
亚洲国产精品va |
亚洲一区二区免费 |
亚洲国产一成人久久精品 |
99国产精品 |
在线精品国精品国产尤物884a |
日韩视频第一页 |
韩国自拍一区 |
亚洲视频网站在线观看 |
一区国产精品 |
99精品视频一区 |
亚洲激情专区 |
欧美在线国产精品 |
亚洲小少妇裸体bbw |
久久婷婷av |
久久精品91久久久久久再现 |
欧美激情va永久在线播放 |
久久久91精品国产一区二区三区 |
欧美人在线视频 |
久久人人看视频 |
国产精品yjizz |
亚洲九九精品 |
亚洲人成人一区二区在线观看 |
亚洲女人天堂成人av在线 |
99精品视频免费全部在线 |
久久九九久精品国产免费直播 |
亚洲免费中文字幕 |
欧美精品日韩三级 |
亚洲成色www8888 |
精品51国产黑色丝袜高跟鞋 |
亚洲宅男天堂在线观看无病毒 |
日韩视频二区 |
欧美成年人视频 |
欧美性色综合 |
亚洲国产精品成人综合色在线婷婷 |
国产一区美女 |
西瓜成人精品人成网站 |
午夜精品一区二区三区在线 |
欧美日韩天天操 |
亚洲精品国产无天堂网2021 |
亚洲精品日本 |
欧美精品在线免费播放 |
亚洲国产欧美日韩精品 |
尤物网精品视频 |
久久久国产成人精品 |
久久成人亚洲 |
国产日本欧美一区二区 |
亚洲图中文字幕 |
午夜精品久久 |
国产一区二区三区在线观看视频
|
亚洲人精品午夜 |
亚洲黄一区二区 |
久久久水蜜桃av免费网站 |
久久精品视频在线观看 |
国产色综合久久 |
久久久www |
欧美成人精品不卡视频在线观看
|
免费在线亚洲欧美 |
免费永久网站黄欧美 |
亚洲国产精品久久久 |
欧美日韩八区 |
亚洲一区二区av电影 |
久久久久99精品国产片 |
亚洲激情av |
欧美午夜精品理论片a级按摩 |
亚洲综合日韩在线 |
久久天堂国产精品 |
亚洲国产精品久久久久秋霞不卡
|
久久久久se |
欧美黄色一级视频 |
一本一本a久久 |
国产精品一区二区你懂得 |
欧美在线视频观看免费网站 |
免费h精品视频在线播放 |
日韩视频免费观看高清在线视频 |
欧美日韩午夜剧场 |
欧美一级视频 |
亚洲高清视频中文字幕 |
亚洲国产精品一区二区第一页 |
欧美精品日韩综合在线 |
日韩午夜在线视频 |
欧美在线视屏 |
亚洲日本在线观看 |
国产精品自拍在线 |
欧美激情网友自拍 |
性刺激综合网 |
亚洲精品婷婷 |
久久久之久亚州精品露出 |
一级日韩一区在线观看 |
国产一区二区三区久久久久久久久 |
久久综合一区二区三区 |
一区二区三区视频在线播放 |
免费成人激情视频 |
亚洲一区精彩视频 |
在线观看日韩国产 |
国产精品羞羞答答xxdd |
欧美成人精品福利 |
欧美一区亚洲二区 |
一区二区三区高清 |
亚洲国产成人一区 |
麻豆精品国产91久久久久久 |
午夜精品国产精品大乳美女 |
亚洲美女av电影 |
亚洲福利视频网站 |
国产一区二区三区直播精品电影 |
欧美日韩日韩 |
欧美成人激情视频免费观看 |
久久国产精彩视频 |
午夜精品久久久久久久久久久久 |
99re66热这里只有精品3直播 |
欧美国产国产综合 |
久久久亚洲午夜电影 |
久久国产精品网站 |
午夜免费久久久久 |
亚洲综合欧美 |
亚洲综合日韩 |
先锋影音一区二区三区 |