#ifndef _LINK_QUEUE_H_

#define _LINK_QUEUE_H_



typedef int elem_type;



typedef struct _NODE

{

	elem_type data;

	struct _NODE *next;

}NODE;

typedef struct _LINK_QUEUE

{

	NODE *head;

	NODE *tail;

}LINK_QUEUE;



bool InitLinkQueue(LINK_QUEUE *p);



bool DestroyLinkQueue(LINK_QUEUE *p);



bool IsEmpty(LINK_QUEUE *p);



bool PUSH(LINK_QUEUE *p,elem_type e);



bool POP(LINK_QUEUE *p,elem_type *e);



int GetLength(LINK_QUEUE *p);



void Display(LINK_QUEUE *p);

#endif
#include "LINKQUEUE.h"

#include

#include

#include



bool InitLinkQueue(LINK_QUEUE *p)

{

	if(p == NULL)

	{

		return false;

	}

	p->head = NULL;

	p->tail = NULL;

	return true;

}



void InitLinkQueue(LINK_QUEUE **p)

{

	LINK_QUEUE *tmp = (LINK_QUEUE *)malloc(sizeof(LINK_QUEUE)*1);

	assert(tmp != NULL);

	tmp->head = NULL;

	tmp->tail = NULL;

	*p = tmp;

}



bool DestroyLinkQueue(LINK_QUEUE *p)

{

	if(p == NULL)

	{

		return false;

	}

	elem_type e;

	int n = GetLength(p);

	for(int i=1;i<=n;i++)

	{

		POP(p,&e);

	}

	return true;

}



bool IsEmpty(LINK_QUEUE *p)

{

	assert(p != NULL);

	return p->head == NULL;

}



bool PUSH(LINK_QUEUE *p,elem_type e)

{

	if(p == NULL)

	{

		return false;

	}

	NODE *tmp = (NODE *)malloc(sizeof(NODE)*1);

	assert(tmp != NULL);

	tmp->data = e;

	tmp->next = NULL;

	if(p->head == NULL)

	{

		p->head = tmp;

		p->tail = tmp;

	}

	else

	{

		p->tail->next = tmp;

		p->tail = tmp;

	}

	return true;

}



bool POP(LINK_QUEUE *p,elem_type *e)

{

	if(p == NULL)

	{

		return false;

	}

	if(IsEmpty(p))

	{

		return false;

	}

	NODE *tmp = p->head;

	*e = tmp->data;

	p->head = tmp->next;

	free(tmp);

	return true;

}



int GetLength(LINK_QUEUE *p)

{

	assert(p != NULL);

	NODE *tmp = p->head;

	int count = 0;

	while(tmp != NULL)

	{

		count++;

		tmp = tmp->next;

	}

	return count;

}

void Display(LINK_QUEUE *p)

{

	if(p == NULL)

	{

		return ;

	}

	NODE *tmp = p->head; 

	int n = GetLength(p);

	for(int i=1;i<=n;i++)

	{

		printf("%d ",tmp->data);

		tmp = tmp->next;

	}

	printf("\n");

}

main

#include"LQ.cpp"
#include"c++.h"
void radixt_sort(int *arr, int len, int n)

{

	int rex;

	int m = 1;

	int j;

	LINK_QUEUE queue[10];

	for(int i=0;i<10;i++)

	{

		InitLinkQueue(&queue[i]);

	}

	for(int i=0;i max)

		{

			max = arr[i];

		}

	}

	while(max != 0)

	{

		max /= 10;

		n++;

	}

	radixt_sort(arr,len,n);

}
int main()
{
int x[10]={11,13,21,6,7,8,1};
 radix_sort(x,10);
for(int i=0;i<10;i++)
cout<