锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲一区二区在线看,亚洲欧美日韩国产一区二区三区,久久久高清一区二区三区 http://m.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鎺掑簭鏂規(guī)硶 http://m.shnenglu.com/zjj2816/archive/2006/08/29/11816.html浜曟硥 浜曟硥 Tue, 29 Aug 2006 03:58:00 GMT http://m.shnenglu.com/zjj2816/archive/2006/08/29/11816.html http://m.shnenglu.com/zjj2816/comments/11816.html http://m.shnenglu.com/zjj2816/archive/2006/08/29/11816.html#Feedback 0 http://m.shnenglu.com/zjj2816/comments/commentRss/11816.html http://m.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://m.shnenglu.com/zjj2816/aggbug/11816.html" width = "1" height = "1" /> ]]>鍦?C/C++ 涓浣曟瀯閫犻氱敤鐨勫璞¢摼琛?/title> http://m.shnenglu.com/zjj2816/archive/2006/06/26/9034.html浜曟硥 浜曟硥 Mon, 26 Jun 2006 11:37:00 GMT http://m.shnenglu.com/zjj2816/archive/2006/06/26/9034.html http://m.shnenglu.com/zjj2816/comments/9034.html http://m.shnenglu.com/zjj2816/archive/2006/06/26/9034.html#Feedback 0 http://m.shnenglu.com/zjj2816/comments/commentRss/9034.html http://m.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 涔嬮棿鍙樊涓涓暣鍨嬪彉閲忋備絾鏄紝鍦ㄧ紪璇戝櫒鐪嬫潵錛屽畠浠粛鐒舵槸闈炲父涓嶅悓鐨勩傚繀欏諱負(fù)瀛樺偍鍦ㄩ摼琛ㄤ腑鐨勬瘡涓璞″鍒剁敤鏉ユ坊鍔犮佸垹闄ゅ拰鎼滅儲(chǔ)閾捐〃鐨勫嚱鏁般備負(fù)浜嗚В鍐寵繖涓棶棰橈紝鍙互浣跨敤鍏鋒湁鍏ㄩ儴涓変釜鍙橀噺鐨勪竴涓仈鍚堟垨緇撴瀯錛屽叾涓暣鏁?c 騫朵笉鏄湪鎵鏈夌殑鎯呭喌涓嬮兘瑕佷嬌鐢ㄣ傝繖鍙兘鍙樺緱闈炲父澶嶆潅錛屽茍浼?xì)迮炴垚涓嶈壇鐨劸~栫▼椋庢牸銆?
C 浠g爜瑙e喅鏂規(guī)錛氳櫄鎷熼摼琛?
姝ら棶棰樻洿濂界殑瑙e喅鏂規(guī)涔嬩竴鏄櫄鎷熼摼琛ㄣ傝櫄鎷熼摼琛ㄦ槸鍙寘鍚摼琛ㄦ寚閽堢殑閾捐〃銆傚璞″瓨鍌ㄥ湪閾捐〃緇撴瀯鑳屽悗銆傝繖涓鐐規(guī)槸榪欐牱瀹炵幇鐨勶紝棣栧厛涓洪摼琛ㄨ妭鐐瑰垎閰嶅唴瀛橈紝鎺ョ潃涓哄璞″垎閰嶅唴瀛橈紝鐒跺悗灝嗚繖鍧楀唴瀛樺垎閰嶇粰閾捐〃鑺傜偣鎸囬拡錛屽涓嬫墍紺猴細(xì)
铏氭嫙閾捐〃緇撴瀯鐨勪竴縐嶅疄鐜?
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 );
銆銆
銆銆銆銆// 灝嗚繖涓妭鐐規(guī)寚瀹氱粰閾捐〃鐨勮〃澶?
銆銆銆銆if( Head )
銆銆銆銆{
銆銆銆銆newlist->next = Head;
銆銆銆銆}
銆銆銆銆else
銆銆銆銆newlist->next = NULL;
銆銆
銆銆銆銆Head = newlist;
銆銆
銆銆銆銆return Head;
銆銆}銆銆
閾捐〃鑺傜偣鐜板湪寤虹珛鍦ㄦ暟鎹煎壇鏈殑鍩烘湰涔嬩笂銆傝繖涓増鏈兘寰堝ソ鍦板鐞嗘爣閲忓鹼紝浣嗕笉鑳藉鐞嗗甫鏈夌敤 malloc 鎴?new 鍒嗛厤鐨勫厓绱犵殑瀵硅薄銆傝澶勭悊榪欎簺瀵硅薄錛孡IST 緇撴瀯闇瑕佸寘鍚竴涓竴鑸殑瑙i櫎鍑芥暟鎸囬拡錛岃繖涓寚閽堝彲鐢ㄦ潵鍦ㄥ皢鑺傜偣浠庨摼琛ㄤ腑鍒犻櫎騫惰В闄ゅ畠涔嬪墠閲婃斁鍐呭瓨錛堟垨鑰呭叧闂枃浠訛紝鎴栬呰皟鐢ㄥ叧闂柟娉曪級(jí)銆?
涓涓甫鏈夎В闄ゅ嚱鏁扮殑閾捐〃
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;
銆銆銆銆
銆銆銆銆// 灝嗚繖涓妭鐐規(guī)寚瀹氱粰閾捐〃鐨勮〃澶?
銆銆銆銆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 )
銆銆{
銆銆銆銆// 瀵硅妭鐐規(guī)寚閽堣繘琛岀被鍨嬭漿鎹?
銆銆銆銆pLIST pl = (pLIST)p;
銆銆
銆銆銆銆// 瀵規(guī)暟鎹寚閽堣繘琛岀被鍨嬭漿鎹?
銆銆銆銆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 );
銆銆}銆銆銆
鍦ㄦ瘡涓摼琛ㄨ妭鐐逛腑鍖呭惈鍚屼竴涓В闄ゅ嚱鏁扮殑鍚屼竴涓寚閽堜技涔庢槸嫻垂鍐呭瓨絀洪棿銆傜‘瀹炲姝わ紝浣嗗彧鏈夐摼琛ㄥ緇堝寘鍚浉鍚岀殑瀵硅薄鎵嶅睘浜庤繖縐嶆儏鍐點(diǎn)傛寜榪欑鏂瑰紡緙栧啓閾捐〃鍏佽鎮(zhèn)ㄥ皢浠諱綍瀵硅薄鏀懼湪閾捐〃涓殑浠諱綍浣嶇疆銆傚ぇ澶氭暟閾捐〃鍑芥暟瑕佹眰瀵硅薄鎬繪槸鐩稿悓鐨勭被鍨嬫垨綾匯?
铏氭嫙閾捐〃鍒欐棤姝よ姹傘傚畠鎵闇瑕佺殑鍙槸灝嗗璞″郊姝ゅ尯鍒嗗紑鐨勪竴縐嶆柟娉曘傝瀹炵幇榪欎竴鐐癸紝鎮(zhèn)ㄦ棦鍙互媯(gè)嫻嬭В闄ゅ嚱鏁版寚閽堢殑鍊鹼紝涔熷彲浠ュ湪閾捐〃涓墍鐢ㄧ殑鍏ㄩ儴緇撴瀯鍓嶆坊鍔犱竴涓被鍨嬪煎茍瀵瑰畠榪涜媯(gè)嫻嬨?
褰撶劧錛屽鏋滆灝嗛摼琛ㄧ紪鍐欎負(fù)涓涓?C++ 綾伙紝鍒欏鎸囧悜瑙i櫎鍑芥暟鐨勬寚閽堢殑璁劇疆鍜屽瓨鍌ㄥ彧鑳借繘琛屼竴嬈°?
C++ 瑙e喅鏂規(guī)錛氱被閾捐〃
鏈В鍐蟲柟妗堝皢 CList 綾誨畾涔変負(fù)浠?LIST 緇撴瀯瀵煎嚭鐨勪竴涓被錛屽畠閫氳繃瀛樺偍瑙i櫎鍑芥暟鐨勫崟涓兼潵澶勭悊鍗曚釜瀛樺偍綾誨瀷銆傝娉ㄦ剰娣誨姞鐨?GetCurrentData() 鍑芥暟錛岃鍑芥暟瀹屾垚浠庨摼琛ㄨ妭鐐規(guī)寚閽堝埌鏁版嵁鍋忕Щ鎸囬拡鐨勬暟瀛﹁漿鎹€備竴涓櫄鎷熼摼琛ㄥ璞?
// 瀹氫箟瑙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 );
銆銆
銆銆銆銆// 灝嗚繖涓妭鐐規(guī)寚瀹氱粰閾捐〃鐨勮〃澶?
銆銆銆銆if( m_HeadOfList )
銆銆銆銆{
銆銆銆銆銆銆newlist->next = m_HeadOfList;
銆銆銆銆}
銆銆銆銆else
銆銆銆銆銆銆newlist->next = NULL;
銆銆
銆銆銆銆m_HeadOfList = newlist;
銆銆
銆銆銆銆return m_HeadOfList;
銆銆}
銆銆
銆銆// 灝嗗綋鍓嶇殑鑺傜偣鏁版嵁浣滀負(fù) 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 )
銆銆{
銆銆銆銆// 瀵硅妭鐐規(guī)寚閽堣繘琛岀被鍨嬭漿鎹?
銆銆銆銆pND_LIST pl = (pND_LIST)p;
銆銆
銆銆銆銆// 瀵規(guī)暟鎹寚閽堣繘琛岀被鍨嬭漿鎹?
銆銆銆銆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;
銆銆}
銆銆
灝忕粨
浠庡墠闈㈢殑璁ㄨ鏉ョ湅錛屼技涔庝粎緙栧啓涓涓畝鍗曠殑閾捐〃灝辮鍋氬ぇ閲忕殑宸ヤ綔錛屼絾榪欏彧欏昏繘琛屼竴嬈°傚緢瀹規(guī)槗灝嗚繖孌典唬鐮佹墿鍏呬負(fù)涓涓鐞嗘帓搴忋佹悳绱互鍙?qiáng)鍚効U嶅叾浠栦換鍔$殑 C++ 綾伙紝騫朵笖榪欎釜綾誨彲浠ュ鐞嗕換浣曟暟鎹璞℃垨綾伙紙鍦ㄤ竴涓」鐩腑錛屽畠澶勭悊澶х害浜屽崄涓笉鍚岀殑瀵硅薄錛夈傛?zhèn)ㄦ案杩滀笉蹇呴噸鏂熬~栧啓榪欐浠g爜銆?/p>
]]> 闃熷垪 http://m.shnenglu.com/zjj2816/archive/2006/06/26/9033.html浜曟硥 浜曟硥 Mon, 26 Jun 2006 11:25:00 GMT http://m.shnenglu.com/zjj2816/archive/2006/06/26/9033.html http://m.shnenglu.com/zjj2816/comments/9033.html http://m.shnenglu.com/zjj2816/archive/2006/06/26/9033.html#Feedback 0 http://m.shnenglu.com/zjj2816/comments/commentRss/9033.html http://m.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;
}
]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
久久久精品一区 |
亚洲国内高清视频 |
亚洲电影第三页 |
亚洲人成网站在线观看播放 |
欧美精品在线观看播放 |
国产香蕉97碰碰久久人人 |
日韩午夜三级在线 |
国产精品mv在线观看 |
欧美伊久线香蕉线新在线 |
欧美国产视频在线观看 |
91久久精品一区 |
精品不卡视频 |
欧美精品在线免费 |
国产精品白丝黑袜喷水久久久 |
久久成人在线 |
国产精品福利av |
欧美在线观看网站 |
久久国产直播 |
亚洲男人第一网站 |
中文精品一区二区三区 |
国产日韩一区二区三区在线 |
国产偷国产偷亚洲高清97cao |
亚洲电影网站 |
久久久免费观看视频 |
久久综合中文字幕 |
一区二区冒白浆视频 |
9久re热视频在线精品 |
国产精品国产三级国产专区53 |
国产女主播一区二区三区 |
国产精品国色综合久久 |
久久久噜久噜久久综合 |
欧美www在线 |
欧美日韩一区二区三区在线观看免 |
欧美成人国产一区二区 |
亚洲精选中文字幕 |
亚洲日本va午夜在线影院 |
午夜精品福利在线观看 |
一本高清dvd不卡在线观看 |
亚洲九九爱视频 |
国产日产欧产精品推荐色 |
一区二区亚洲 |
久久全国免费视频 |
国内成人在线 |
亚洲免费影视 |
亚洲一区欧美激情 |
欧美在线国产精品 |
亚洲天堂成人在线视频 |
亚洲一区二区三区四区五区午夜 |
久久国产主播 |
久久久久久亚洲精品不卡4k岛国 |
欧美一区国产二区 |
韩国免费一区 |
亚洲日本在线观看 |
久久婷婷国产综合国色天香 |
日韩亚洲欧美成人一区 |
免费久久99精品国产 |
国产婷婷色一区二区三区在线
|
欧美日韩亚洲系列 |
亚洲精品视频在线播放 |
欧美v日韩v国产v |
久久国产福利 |
国产日韩欧美一区 |
久久精品成人欧美大片古装 |
亚洲性视频网址 |
国产精品视频区 |
午夜精品久久久久久久男人的天堂
|
亚洲一二三区精品 |
99综合精品 |
国产精品久久久一本精品 |
亚洲一区精品在线 |
亚洲一级黄色片 |
国产精品揄拍500视频 |
亚洲综合三区 |
午夜在线一区 |
永久免费毛片在线播放不卡 |
美女网站久久 |
欧美大片免费观看 |
9久re热视频在线精品 |
日韩亚洲精品视频 |
国产精品视频免费 |
久久久免费精品视频 |
欧美成人自拍 |
亚洲综合好骚 |
欧美在线首页 |
亚洲美女诱惑 |
亚洲欧美日本国产专区一区 |
国产自产精品 |
亚洲激情视频在线观看 |
欧美色图一区二区三区 |
久久久视频精品 |
欧美黄色aaaa |
欧美在线亚洲 |
欧美激情乱人伦 |
久久精彩免费视频 |
欧美精品一区二区在线观看 |
欧美一区二区三区四区高清
|
欧美在线视频网站 |
久久久久亚洲综合 |
日韩亚洲欧美一区 |
亚洲欧美综合精品久久成人 |
亚洲成在人线av |
一区二区三区欧美在线观看 |
精品999在线播放 |
99国产精品久久久 |
亚洲高清视频在线观看 |
亚洲一区二区三区乱码aⅴ蜜桃女 |
一区二区三区在线观看国产 |
亚洲破处大片 |
在线日韩av片 |
亚洲欧美日韩中文视频 |
日韩亚洲国产欧美 |
久久精品国产免费 |
先锋亚洲精品 |
欧美日韩国产一区二区 |
快射av在线播放一区 |
国产精品日韩久久久 |
亚洲精品久久久久久久久 |
伊人春色精品 |
欧美在线高清视频 |
欧美一级一区 |
国产精品美女在线观看 |
一本色道综合亚洲 |
一区二区三区四区在线 |
麻豆国产va免费精品高清在线 |
欧美一区二区三区四区视频 |
欧美四级电影网站 |
亚洲精品久久久久久下一站
|
在线成人小视频 |
亚洲欧美日韩国产综合 |
亚洲一区二区三区乱码aⅴ蜜桃女 |
麻豆精品网站 |
欧美大片免费观看 |
最新国产成人在线观看 |
老鸭窝亚洲一区二区三区 |
久久人人爽人人爽 |
国内精品视频久久 |
欧美中文字幕在线观看 |
久久久午夜电影 |
国际精品欧美精品 |
久久久久www |
牛牛影视久久网 |
亚洲人成人一区二区三区 |
蜜桃av一区 |
亚洲国产精品一区二区www |
亚洲人妖在线 |
欧美日韩美女在线 |
亚洲一区图片 |
久久免费视频网站 |
亚洲高清一区二区三区 |
欧美成人a∨高清免费观看 |
91久久久久 |
一区二区三区四区国产精品 |
欧美日韩a区 |
一区二区三区欧美激情 |
欧美一区免费 |
在线观看一区视频 |
欧美极品一区 |
亚洲一区制服诱惑 |
老司机久久99久久精品播放免费 |
1769国产精品 |
亚洲欧洲日本一区二区三区 |
欧美精品1区2区 |
在线性视频日韩欧美 |
欧美一区在线直播 |
永久免费视频成人 |
欧美日韩国产小视频 |
亚洲一区二区在线看 |
麻豆精品传媒视频 |
中文在线资源观看视频网站免费不卡 |
国产精品久久激情 |
久久亚洲视频 |
在线一区二区三区做爰视频网站 |
久久久青草婷婷精品综合日韩 |
亚洲国产日韩欧美 |
国产精品试看 |
欧美黄色网络 |
久久国产视频网站 |
一区二区三区不卡视频在线观看
|
国产精品久久久久久av下载红粉 |
久久大逼视频 |
一本色道久久88综合日韩精品 |
久久久久久9 |
亚洲图片欧美一区 |
亚洲国产精品一区制服丝袜 |
国产精品高清在线观看 |
美日韩精品免费 |
欧美亚洲免费电影 |
av成人毛片 |
亚洲国产精品视频 |
久久这里只有 |
先锋a资源在线看亚洲 |
99精品欧美一区 |
在线观看日产精品 |
国产免费一区二区三区香蕉精 |
欧美精品色一区二区三区 |
久久中文在线 |
久久久一二三 |
久久国产精品久久久久久 |
亚洲一区二区三区三 |
亚洲美女色禁图 |