1. 程式人生 > >楊輝三角的鏈佇列解法(鏈佇列操作標頭檔案)

楊輝三角的鏈佇列解法(鏈佇列操作標頭檔案)

//LinkQueue.h
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define datatype int

struct node
{
	datatype data;
	struct node *next;
};
typedef struct node LinkListNode;

typedef struct
{
	LinkListNode *front;
	LinkListNode *rear;
}LinkQueue;

//LinkQueue *lq;

//初始化
void Initialize_LinkQueue(LinkQueue *lq)
{
	lq->front=(LinkListNode *)malloc(sizeof(LinkListNode));
	lq->front->next=NULL;
	lq->rear=lq->front;
}

//判斷隊空
int IsEmpty_LinkQueue(LinkQueue *lq)
{
	if(lq->front==lq->rear)
		return TRUE;
	else
		return FALSE;
}

//取隊頭結點值
int Get_LinkQueue(LinkQueue *lq, datatype *x)
{
	if(IsEmpty_LinkQueue(lq))
		return FALSE;
	else
	{
		x=&(lq->front->next->data);
		return TRUE;
	}
}

//入隊
void Insert_LinkQueue(LinkQueue *lq, datatype x)
{
	lq->rear->next=(LinkListNode *)malloc(sizeof(LinkListNode));
	lq->rear=lq->rear->next;
	lq->rear->data=x;
	lq->rear->next=NULL;
}

//出隊
LinkListNode *Delete_LinkQueue(LinkQueue *lq)
{
	LinkListNode *s;
	if(IsEmpty_LinkQueue(lq))
		return NULL;
	else
	{
		s=lq->front->next;
		if(s->next==NULL)
		{
			lq->front->next=NULL;
			lq->rear=lq->front;
		}
		else
		{
			lq->front->next=s->next;
		}
		return s;
	}
}