53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#include <stdio.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "pqueue.h"
							 | 
						||
| 
								 | 
							
								#include "iqueue.h"
							 | 
						||
| 
								 | 
							
								//http://www.koders.com/c/fid7B82D8DDECE4EDC672F17D970458033C4079A615.aspx?s=queue
							 | 
						||
| 
								 | 
							
								#define INT_VALUE 1000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//typedef int (*ComparisonFunction)(void*, void*);
							 | 
						||
| 
								 | 
							
								int compare_int (const int *a, const int *b)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  fprintf(stderr,"comparing %i %i \n",*a,*b);
							 | 
						||
| 
								 | 
							
								  int temp = *a - *b;
							 | 
						||
| 
								 | 
							
								  //  return (a<b) ? 1 : -1;
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								  //  return -1;
							 | 
						||
| 
								 | 
							
								  if (temp < 0)
							 | 
						||
| 
								 | 
							
								    return 1;
							 | 
						||
| 
								 | 
							
								  else if (temp > 0)
							 | 
						||
| 
								 | 
							
								    return -1;
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int main (int argc, char* argv[]) {
							 | 
						||
| 
								 | 
							
								    int val1 = 1;
							 | 
						||
| 
								 | 
							
								    int val2 = 2;
							 | 
						||
| 
								 | 
							
								    int val3 = 3;
							 | 
						||
| 
								 | 
							
								    int val4 = 4;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Queue q = QueueNew();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    QueuePutOnPriority(q, &val1, INT_VALUE,(ComparisonFunction)compare_int);
							 | 
						||
| 
								 | 
							
								    QueuePutOnPriority(q, &val3, INT_VALUE,(ComparisonFunction)compare_int);
							 | 
						||
| 
								 | 
							
								    QueuePutOnPriority(q, &val2, INT_VALUE,(ComparisonFunction)compare_int);
							 | 
						||
| 
								 | 
							
								    QueuePutOnPriority(q, &val4, INT_VALUE,(ComparisonFunction)compare_int);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    QueueItem qptr = q->head;
							 | 
						||
| 
								 | 
							
								    while (qptr != NULL) {
							 | 
						||
| 
								 | 
							
								        int* val = (int*) qptr->element;
							 | 
						||
| 
								 | 
							
								        printf("value: %d\n", *val);
							 | 
						||
| 
								 | 
							
								        qptr = qptr->next;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    QueueIterator qiter = QueueIteratorNew(q, 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    while (qiter->currentItem != NULL) {
							 | 
						||
| 
								 | 
							
								        int* val = (int*) qiter->currentItem->element;
							 | 
						||
| 
								 | 
							
								        printf("iterator value: %d\n", *val);
							 | 
						||
| 
								 | 
							
								        QueueIteratorAdvance(qiter);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |