锘??xml version="1.0" encoding="utf-8" standalone="yes"?>伊人丁香狠狠色综合久久,深夜久久AAAAA级毛片免费看,久久九九久精品国产免费直播http://www.shnenglu.com/lwch/category/14192.html銆怮Q:510134884銆戙愮紪璇戝師鐞嗕氦嫻佺兢:83905136銆戙怤Script欏圭洰緹?38843264銆戙怑mail:lwch4@163.com銆?/description>zh-cnTue, 22 Feb 2011 12:18:02 GMTTue, 22 Feb 2011 12:18:02 GMT60- 鍫嗙粨鏋勭殑瀹炵幇2http://www.shnenglu.com/lwch/archive/2011/02/22/140460.htmllwchlwchTue, 22 Feb 2011 09:29:00 GMThttp://www.shnenglu.com/lwch/archive/2011/02/22/140460.htmlhttp://www.shnenglu.com/lwch/comments/140460.htmlhttp://www.shnenglu.com/lwch/archive/2011/02/22/140460.html#Feedback0http://www.shnenglu.com/lwch/comments/commentRss/140460.htmlhttp://www.shnenglu.com/lwch/services/trackbacks/140460.html銆婄畝鍗曞爢緇撴瀯鐨勫疄鐜般?/a>涔嬪悗淇敼浜嗕笅浠g爜,浣垮唴瀛樼殑鍒嗛厤鏁堢巼鏇撮珮.
棣栧厛灝咹eapApplyed鍜孒eapUsed鍖呭惈榪涗竴涓粨鏋勪綋HEAPATTR,鍚勫崰1浣?
1 struct HEAPATTR
2 {
3 BYTE HeapApplyed : 1;
4 BYTE HeapUsed : 1;
5 }*HeapAttr;
鐒跺悗娣誨姞浜嗕竴涓狧eapCurrent鍙橀噺鐢ㄤ簬鎻愰珮媯绱㈤熷害.
1 int HeapCurrent;
鐩稿簲鐨勬瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟淇敼涓?
1 Heap(const int Size = 1024 * 300)
2 : HeapLength(Size),HeapCurrent(0),HeapLeft(Size)
3 {
4 HeapData = new CHAR[HeapLength];
5 HeapAttr = new HEAPATTR[HeapLength];
6 memset(HeapData,0,HeapLength);
7 memset(HeapAttr,0,HeapLength);
8 }
9
10 ~Heap()
11 {
12 delete[] HeapData;
13 delete[] HeapAttr;
14 }
娉ㄦ剰:涓涓狧EAPATTR緇撴瀯鍗?涓瓧鑺?瀹為檯涓婁嬌鐢ㄧ殑鍙湁2浣?緙栬瘧鍣ㄨ嚜鍔ㄤ負鍏惰ˉ榻?浣嶅艦鎴?瀛楄妭(鏃㈢劧鍙湁TRUE鍜孎ALSE娌$悊鐢辮鐢℉eapLength*2瀛楄妭
)
淇敼GetEmptyAddr綆楁硶,浣垮叾鎻愬崌鏁堢巼.
1 CHAR* GetEmptyAddr(const int Size)
2 {
3 int Left = 0;
4 for(int i=HeapCurrent;i<HeapLength;i++)
5 {
6 if(HeapAttr[i].HeapApplyed && !HeapAttr[i].HeapUsed) Left++;
7 else Left = 0;
8 if(Left == Size) return HeapData + i - Left + 1;
9 }
10 if(HeapCurrent > 0 && HeapCurrent > Size)
11 {
12 Left = 0;
13 for(int i=0;i<HeapCurrent;i++)
14 {
15 if(HeapAttr[i].HeapApplyed && !HeapAttr[i].HeapUsed) Left++;
16 else Left = 0;
17 if(Left == Size) return HeapData + i - Left + 1;
18 }
19 }
20 return 0;
21 }
鍚屾椂涔熷皢GetEmptyLeft淇敼涓?
1 inline int GetEmptyLeft(int Size)
2 {
3 int Left = 0;
4 for(int i=HeapCurrent;i<HeapLength;i++)
5 {
6 if(!HeapAttr[i].HeapApplyed) Left++;
7 else Left = 0;
8 if(Left == Size) return i - Left + 1;
9 }
10 if(HeapCurrent > 0 && HeapCurrent > Size)
11 {
12 Left = 0;
13 for(int i=0;i<HeapCurrent;i++)
14 {
15 if(!HeapAttr[i].HeapApplyed) Left++;
16 else Left = 0;
17 if(Left == Size) return i - Left + 1;
18 }
19 }
20 return 0;
21 }
娣誨姞DumpFile鍑芥暟鐢熸垚Dump鏂囦歡.
1 BOOL DumpFile(CHAR* FileName)
2 {
3 FILE* fp = fopen(FileName,"wt+");
4 fwrite(HeapData,HeapLength,sizeof(CHAR),fp);
5 fclose(fp);
6 return TRUE;
7 }
鏈鍚庣粰鍑?a href="http://www.shnenglu.com/Files/lwch/HeapTest_2.rar" target=_blank>瀹屾暣浠g爜
]]> - 綆鍗曠殑鍫嗙粨鏋勫疄鐜?/title>http://www.shnenglu.com/lwch/archive/2011/02/15/140115.htmllwchlwchTue, 15 Feb 2011 12:59:00 GMThttp://www.shnenglu.com/lwch/archive/2011/02/15/140115.htmlhttp://www.shnenglu.com/lwch/comments/140115.htmlhttp://www.shnenglu.com/lwch/archive/2011/02/15/140115.html#Feedback2http://www.shnenglu.com/lwch/comments/commentRss/140115.htmlhttp://www.shnenglu.com/lwch/services/trackbacks/140115.html鎴戜滑鐭ラ亾瀵逛簬涓涓暟鎹爢,鏈夌敵璇峰唴瀛樺潡,閲婃斁鍐呭瓨鍧楃瓑鎿嶄綔.
搴旀鎴戜滑緇欏嚭3涓暟緇?鍒嗗埆涓哄唴瀛樺爢,鏍囪鏁扮粍,浣跨敤鏄惁鏁扮粍鍜屼竴涓彉閲忕敤浜庤〃紺哄唴瀛樺爢鍐呭墿浣欑┖闂存暟.
1 CHAR HeapData[HEAP_LENGTH];
2 CHAR HeapApplyed[HEAP_LENGTH];
3 CHAR HeapUsed[HEAP_LENGTH];
4
5 int HeapLeft; // 鍓╀綑Heap澶у皬
鍒濆鍖栨椂灝?涓暟緇勫叏閮ㄨ涓?.
1 memset(HeapData,0,HEAP_LENGTH);
2 memset(HeapApplyed,0,HEAP_LENGTH);
3 memset(HeapUsed,0,HEAP_LENGTH);
鐒跺悗鎴戜滑闇瑕佷竴涓狽ew鎿嶄綔鏉ョ敵璇蜂竴鍧楀皻鏈嬌鐢ㄧ殑鍐呭瓨鍧?
1 CHAR* New(const int Size)
2 {
3 if(Size > HeapLeft) throw HEAP_OVERFLOW;
4 int iEmpty = GetEmptyLeft(Size);
5
6 memset(HeapApplyed + iEmpty,1,Size); // 灝嗗唴瀛樺潡鏍囪
7
8 HeapLeft -= Size;
9 return HeapData + iEmpty;
10 }
涓涓狥ree鎿嶄綔鏉ラ噴鏀句竴涓唴瀛樺潡.
1 BOOL Free(const int Offset,const int Size)
2 {
3 if(!Apply(Offset,Size)) throw HEAP_NOTAPPLY;
4 memset(HeapApplyed + Offset,0,Size); // 璁劇疆涓烘湭鏍囪
5 memset(HeapUsed + Offset,0,Size); // 鏍囪涓烘湭浣跨敤
6 HeapLeft += Size;
7 return TRUE;
8 }
涓涓狦etEmptyAddr鎿嶄綔鏉ヨ幏寰楃涓涓鍚堟寚瀹氬ぇ灝忕殑絀洪棽鍐呭瓨鍗″潡.
1 CHAR* GetEmptyAddr(const int Size)
2 {
3 for(int i=0;i<HEAP_LENGTH;i++)
4 if(HeapApplyed[i] && !HeapUsed[i]) // 宸叉爣璁板茍鏈嬌鐢?/span>
5 {
6 BOOL bContinue = FALSE;
7 for(int j=i;j<Size;j++)
8 if(!HeapApplyed[j] || HeapUsed[j]) // 鏈爣璁版垨宸蹭嬌鐢?/span>
9 {
10 bContinue = TRUE;
11 break;
12 }
13 if(bContinue) continue;
14 return HeapData + i;
15 }
16 return 0;
17 }
鍜屼竴涓猄etData鎿嶄綔鏉ヨ緗暟鎹?
1 BOOL SetData(const int Offset,const Type* Data,const int Size)
2 {
3 if(!Apply(Offset,Size)) throw HEAP_NOTAPPLY;
4 memcpy(HeapData + Offset,Data,Size); // 鎷瘋礉鏁版嵁
5 memset(HeapUsed + Offset,1,Size); // 鏍囪涓哄凡浣跨敤
6 return TRUE;
7 }
鏈鍚庢垜浠潵嫻嬭瘯涓涓嬭繖涓爢緇撴瀯.
1 try
2 {
3 Heap<CHAR> heap;
4 heap.New(9000);
5
6 int i = 1000;
7 heap.Free(0,100);
8 printf("EmptyAddr:%X\n",heap.GetEmptyAddr(sizeof(int)));
9
10 int* Addr1 = (int*)heap.GetEmptyAddr(sizeof(int));
11 heap.SetData((CHAR*)Addr1 - *heap,(CHAR*)&i,sizeof(int));
12
13 printf("The Data In Heap:%d\n",*Addr1);
14
15 heap.New(100);
16 printf("EmptyAddr:%X\n",heap.GetEmptyAddr(sizeof(int)));
17
18 CHAR str[] = "aaaaa";
19 CHAR* Addr2 = heap.GetEmptyAddr(strlen(str));
20 heap.SetData(Addr2 - *heap,str,strlen(str));
21
22 printf("The Data In Heap:%s\n",Addr2);
23
24 printf("EmptyAddr:%X\n",heap.GetEmptyAddr(sizeof(int)));
25 }
26 catch(int i)
27 {
28 switch(i)
29 {
30 case HEAP_OVERFLOW:
31 printf("鍫嗘孩鍑篭n");
32 break;
33 case HEAP_NOTAPPLY:
34 printf("閿欒鐨勫湴鍧\n");
35 break;
36 }
37 }
嫻嬭瘯緇撴灉:
1 EmptyAddr:4EFB0
2 The Data In Heap:1000
3 EmptyAddr:4EF4C
4 The Data In Heap:aaaaa
5 EmptyAddr:4EF51
涓嬮潰緇欏嚭瀹屾暣浠g爜
]]>- 綆鍗曠殑Hash琛ㄥ疄鐜?/title>http://www.shnenglu.com/lwch/archive/2010/08/10/122997.htmllwchlwchTue, 10 Aug 2010 15:37:00 GMThttp://www.shnenglu.com/lwch/archive/2010/08/10/122997.htmlhttp://www.shnenglu.com/lwch/comments/122997.htmlhttp://www.shnenglu.com/lwch/archive/2010/08/10/122997.html#Feedback0http://www.shnenglu.com/lwch/comments/commentRss/122997.htmlhttp://www.shnenglu.com/lwch/services/trackbacks/122997.html 1 #include <iostream>
2
3 template <typename _Type>
4 class HashTable
5 {
6 public:
7 HashTable(int Length)
8 {
9 Element = new _Type[Length];
10 for(int i=0;i<Length;i++)
11 Element[i] = -1;
12 this->Length = Length;
13 Count = 0;
14 }
15
16 ~HashTable()
17 {
18 delete[] Element;
19 }
20
21 // Hash鍑芥暟
22 virtual int Hash(_Type Data)
23 {
24 return Data % Length;
25 }
26
27 // 鍐嶆暎鍒楁硶
28 virtual int ReHash(int Index,int Count)
29 {
30 return (Index + Count) % Length;
31 }
32
33 // 鏌ユ壘鏌愪釜鍏冪礌鏄惁鍦ㄨ〃涓?/span>
34 virtual bool SerachHash(_Type Data,int& Index)
35 {
36 Index = Hash(Data);
37 int Count = 0;
38 while(Element[Index] != -1 && Element[Index] != Data)
39 Index = ReHash(Index,++Count);
40 return Data == Element[Index] ? true : false;
41 }
42
43 virtual int SerachHash(_Type Data)
44 {
45 int Index = 0;
46 if(SerachHash(Data,Index)) return Index;
47 else return -1;
48 }
49
50 // 鎻掑叆鍏冪礌
51 bool InsertHash(_Type Data)
52 {
53 int Index = 0;
54 if(Count < Length && !SerachHash(Data,Index))
55 {
56 Element[Index] = Data;
57 Count++;
58 return true;
59 }
60 return false;
61 }
62
63 // 璁劇疆Hash琛ㄩ暱搴?/span>
64 void SetLength(int Length)
65 {
66 delete[] Element;
67 Element = new _Type[Length];
68 for(int i=0;i<Length;i++)
69 Element[i] = -1;
70 this->Length = Length;
71 }
72
73 // 鍒犻櫎鏌愪釜鍏冪礌
74 void Remove(_Type Data)
75 {
76 int Index = SerachHash(Data);
77 if(Index != -1)
78 {
79 Element[Index] = -1;
80 Count--;
81 }
82 }
83
84 // 鍒犻櫎鎵鏈夊厓绱?/span>
85 void RemoveAll()
86 {
87 for(int i=0;i<Length;i++)
88 Element[i] = -1;
89 Count = 0;
90 }
91
92 void Print()
93 {
94 for(int i=0;i<Length;i++)
95 printf("%d ",Element[i]);
96 printf("\n");
97 }
98 protected:
99 _Type* Element; // Hash琛?/span>
100 int Length; // Hash琛ㄥぇ灝?/span>
101 int Count; // Hash琛ㄥ綋鍓嶅ぇ灝?/span>
102 };
103
104 void main()
105 {
106 HashTable<int> H(10);
107 printf("Hash Length(10) Test:\n");
108 int Array[6] = {49,38,65,97,13,49};
109 for(int i=0;i<6;i++)
110 printf("%d\n",H.InsertHash(Array[i]));
111 H.Print();
112 printf("Find(97):%d\n",H.SerachHash(97));
113 printf("Find(49):%d\n",H.SerachHash(49));
114 H.RemoveAll();
115 H.SetLength(30);
116 printf("Hash Length(30) Test:\n");
117 for(int i=0;i<6;i++)
118 printf("%d\n",H.InsertHash(Array[i]));
119 H.Print();
120 printf("Find(97):%d\n",H.SerachHash(97));
121 printf("Find(49):%d\n",H.SerachHash(49));
122 system("pause");
123 }
榪愯緇撴灉:

鐢變笂鍥懼彲鐭ョ粰瀹氱殑Hash琛ㄩ暱搴﹁秺闀胯秺涓嶅鏄撲駭鐢熷啿紿?鎬ц兘涔熷氨瓚婇珮.

]]> - 鏁版嵁緇撴瀯http://www.shnenglu.com/lwch/archive/2010/07/08/119656.htmllwchlwchWed, 07 Jul 2010 16:12:00 GMThttp://www.shnenglu.com/lwch/archive/2010/07/08/119656.htmlhttp://www.shnenglu.com/lwch/comments/119656.htmlhttp://www.shnenglu.com/lwch/archive/2010/07/08/119656.html#Feedback1http://www.shnenglu.com/lwch/comments/commentRss/119656.htmlhttp://www.shnenglu.com/lwch/services/trackbacks/119656.html銆婃暟鎹粨鏋勪箣綰挎ц〃銆?/a>
鏈枃闃愯堪浜嗙嚎鎬ц〃涓殑欏哄簭瀛樺偍緇撴瀯鍜岄摼鎺ュ瓨鍌ㄧ粨鏋勶紝鍏朵腑涓昏浠嬬粛浜嗗崟閾捐〃鍜屽驚鐜弻閾捐〃緇撴瀯錛岀嚎鎬ц〃涔冩渶鍩烘湰鐨勬暟鎹粨鏋勩?
銆婃暟鎹粨鏋勪箣鏍堛?/a>
鏈枃闃愯堪浜嗙嚎鎬ц〃鐨勪竴縐嶇壒孌婂艦寮忔爤錛屽叾涓富瑕佷粙緇嶄簡鏍堢殑欏哄簭瀛樺偍緇撴瀯鍜岃繛鎺ュ瓨鍌ㄧ粨鏋勶紝鍘嬫爤涓庡嚭鏍堟搷浣溿?

]]>
色欲久久久天天天综合网|
国产2021久久精品|
国产激情久久久久久熟女老人|
亚洲v国产v天堂a无码久久|
99精品国产99久久久久久97|
国内精品久久人妻互换|
国产精品欧美久久久久天天影视|
久久精品成人|
久久男人Av资源网站无码软件|
久久最近最新中文字幕大全|
亚洲精品99久久久久中文字幕|
日日躁夜夜躁狠狠久久AV|
国产一区二区精品久久岳|
中文字幕人妻色偷偷久久|
精品久久久久久久久久中文字幕
|
久久久久成人精品无码中文字幕|
亚洲狠狠综合久久|
伊人久久大香线蕉亚洲五月天|
精品久久人人做人人爽综合
|
无码专区久久综合久中文字幕|
国产精品久久久99|
国产成人久久精品激情
|
一个色综合久久|
精品久久久久中文字|
久久国产乱子精品免费女|
亚洲中文久久精品无码ww16|
久久影院久久香蕉国产线看观看|
亚洲伊人久久大香线蕉苏妲己|
精品久久人妻av中文字幕|
日韩久久久久久中文人妻|
一本久道久久综合狠狠躁AV|
精品久久人人做人人爽综合|
93精91精品国产综合久久香蕉|
97久久综合精品久久久综合|
少妇精品久久久一区二区三区|
久久久亚洲裙底偷窥综合|
日韩欧美亚洲综合久久|
无码人妻久久一区二区三区蜜桃|
久久这里只有精品首页|
99精品国产99久久久久久97|
久久亚洲中文字幕精品有坂深雪
|