#include <grid_queue.h>
Collaboration diagram for wustl_mm::SkeletonMaker::GridQueue:
Public Member Functions | |
GridQueue () | |
gridQueueEle * | getHead () |
int | getNumElements () |
void | sort (int eles) |
void | pushQueue (int xx, int yy, int zz) |
int | popQueue (int &xx, int &yy, int &zz) |
Private Member Functions | |
void | swapEle (gridQueueEle *pre, gridQueueEle *e1, gridQueueEle *e2) |
Private Attributes | |
gridQueueEle * | head |
gridQueueEle * | tail |
int | numEles |
|
Definition at line 8 of file grid_queue.cpp. References head, numEles, and tail.
|
|
Definition at line 14 of file grid_queue.cpp. 00014 {
00015 return head ;
00016 }
|
|
Definition at line 18 of file grid_queue.cpp. 00018 {
00019 return numEles ;
00020 }
|
|
Definition at line 88 of file grid_queue.cpp. References head, wustl_mm::SkeletonMaker::gridQueueEle::next, numEles, tail, wustl_mm::SkeletonMaker::gridQueueEle::x, wustl_mm::SkeletonMaker::gridQueueEle::y, and wustl_mm::SkeletonMaker::gridQueueEle::z. 00088 { 00089 if ( head == NULL ) 00090 { 00091 return 0 ; 00092 } 00093 00094 xx = head->x ; 00095 yy = head->y ; 00096 zz = head->z ; 00097 00098 gridQueueEle* temp = head ; 00099 head = head->next ; 00100 delete temp ; 00101 00102 if ( head == NULL ) 00103 { 00104 tail = NULL ; 00105 } 00106 numEles -- ; 00107 00108 return 1 ; 00109 }
|
|
Definition at line 69 of file grid_queue.cpp. References head, wustl_mm::SkeletonMaker::gridQueueEle::next, numEles, wustl_mm::SkeletonMaker::gridQueueEle::score, tail, wustl_mm::SkeletonMaker::gridQueueEle::x, wustl_mm::SkeletonMaker::gridQueueEle::y, and wustl_mm::SkeletonMaker::gridQueueEle::z. 00069 { 00070 gridQueueEle* ele = new gridQueueEle ; 00071 ele->x = xx ; 00072 ele->y = yy ; 00073 ele->z = zz ; 00074 ele->score = 0 ; 00075 ele->next = NULL ; 00076 if ( head == NULL ) 00077 { 00078 head = ele ; 00079 } 00080 else 00081 { 00082 tail->next = ele ; 00083 } 00084 tail = ele ; 00085 numEles ++ ; 00086 }
|
|
Definition at line 23 of file grid_queue.cpp. References wustl_mm::SkeletonMaker::gridQueueEle::next, wustl_mm::SkeletonMaker::gridQueueEle::score, and swapEle(). 00023 { 00024 //printf("Sorting elements with descending scores...\n") ; 00025 gridQueueEle* pre ; 00026 gridQueueEle* e1 ; 00027 gridQueueEle* e2 ; 00028 00029 for ( int i = eles - 1 ; i > 0 ; i -- ) 00030 { 00031 pre = NULL ; 00032 e1 = head ; 00033 e2 = e1->next ; 00034 00035 for ( int j = 0 ; j < i ; j ++ ) 00036 { 00037 if ( e1->score < e2->score ) 00038 { 00039 swapEle( pre, e1, e2 ) ; 00040 } 00041 else if ( e1->score == e2->score && rand() < RAND_MAX / 2) 00042 { 00043 swapEle( pre, e1, e2 ) ; 00044 } 00045 00046 if ( pre == NULL ) 00047 { 00048 pre = head ; 00049 } 00050 else 00051 { 00052 pre = pre->next; 00053 } 00054 e1 = pre->next ; 00055 e2 = e1->next ; 00056 } 00057 } 00058 00059 /* Debugging 00060 pre = head ; 00061 while ( pre != NULL ) 00062 { 00063 printf("%d ", pre->score ) ; 00064 pre = pre->next ; 00065 }*/ 00066 }
|
|
Definition at line 112 of file grid_queue.cpp. References head, wustl_mm::SkeletonMaker::gridQueueEle::next, and tail. Referenced by sort(). 00113 { 00114 if ( pre != NULL ) 00115 { 00116 e1->next = e2->next ; 00117 e2->next = pre->next ; 00118 pre->next = e2 ; 00119 00120 if ( tail == e2 ) 00121 { 00122 tail = e1 ; 00123 } 00124 } 00125 else 00126 { 00127 e1->next = e2->next ; 00128 e2->next = e1 ; 00129 head = e2 ; 00130 00131 if ( tail == e2 ) 00132 { 00133 tail = e1 ; 00134 } 00135 } 00136 }
|
|
Definition at line 35 of file grid_queue.h. Referenced by GridQueue(), popQueue(), pushQueue(), and swapEle(). |
|
Definition at line 37 of file grid_queue.h. Referenced by GridQueue(), popQueue(), and pushQueue(). |
|
Definition at line 36 of file grid_queue.h. Referenced by GridQueue(), popQueue(), pushQueue(), and swapEle(). |