/*********************************************************************************
|
* Copyright: (C) 2012 Guo Wenxue<guowenxue@gmail.com>
|
* All rights reserved.
|
*
|
* Filename: test_queue.c
|
* Description: This file used to test the queue library
|
*
|
* Version: 1.0.0(08/14/2012~)
|
* Author: Guo Wenxue <guowenxue@gmail.com>
|
* ChangeLog: 1, Release initial version on "08/14/2012 05:17:03 PM"
|
*
|
********************************************************************************/
|
|
#include <stdio.h>
|
#include <string.h>
|
#include <stdlib.h>
|
|
#include "cp_queue.h"
|
|
typedef struct node_s
|
{
|
int data;
|
CP_QNODE *link;
|
} node_t;
|
|
#define MAX_ITEMS 10
|
|
/********************************************************************************
|
* Description:
|
* Input Args:
|
* Output Args:
|
* Return Value:
|
********************************************************************************/
|
int main (int argc, char **argv)
|
{
|
int i;
|
|
node_t *node = NULL;
|
node_t *tmp = NULL;
|
|
CP_QUEUE *queue = NULL;
|
|
queue = cp_queue_init(NULL, MAX_ITEMS);
|
|
for (i=0; i<MAX_ITEMS+10; i++)
|
{
|
node = malloc(sizeof(node_t));
|
if( !node )
|
break;
|
|
if( NULL==cp_enqueue(queue, node) )
|
{
|
free(node);
|
}
|
else
|
{
|
if(i==3)
|
{
|
tmp = node;
|
}
|
printf("enqueue node %p\n", node);
|
}
|
}
|
|
|
printf("queue usage %d/%d \n", cp_queue_count(queue), cp_queue_size(queue));
|
|
cp_travel_queue(queue);
|
if( cp_rmqueue(queue, tmp) )
|
{
|
printf("remove and terminate node [%p] from queue\n", tmp);
|
free(tmp);
|
}
|
cp_travel_queue(queue);
|
|
while(!cp_queue_is_empty(queue))
|
{
|
if( (node=cp_dequeue(queue)) )
|
{
|
printf("Terminate node: %p\n", node);
|
free(node);
|
}
|
}
|
|
cp_queue_destroy(queue);
|
|
return 0;
|
|
} /* ----- End of main() ----- */
|