初學數據結構之隊列

一.數組實現(只用N-1個空間)
#define MaxSize 10
typedef struct 
{
	int Data[MaxSize];
	int rear;
	int front;	
}Quene;

void AddQ(Quene *Ptrq,int item)
{
	if((Ptrq->rear+1)%MaxSize==Ptrq->front)
	{
		printf("隊列滿");
		return ;		 
	}
	Ptrq->rear=(Ptrq->rear+1)%MaxSize;
	Ptrq->Data[Ptrq->rear]=item;
}
int DelectQ(Quene *Ptrq)
{
	if(Ptrq->front==Ptrq->rear)
	{
		printf("隊列空");
		return ERROR;		 
	}
	else
	{
		Ptrq->front=(Ptrq->front+1)%MaxSize;
		return Ptrq->Data[Ptrq->front];
	}
}

二.鏈表實現
typedef struct Node
{
	int Data;
	struct Node *Next;
}QNode;

typedef struct 
{
	QNode *rear;
	QNode *front;
}LinkQuene;
LinkQuene *Ptrq;

int DelectQ(LinkQuene *Ptrq)
{
	QNode *FrontCell;
	int FrontElem;
	if(Ptrq->front==NULL)
	{
		printf("隊列空");
		return ERROR;
	}
	FrontCell=Ptrq->front;
	if(Ptrq->front==Ptrq->rear)
	{
		Ptrq->front=Ptrq->rear=NULL;
	}
	else
	{
		Ptrq->front=Ptrq->front->Next;
	}
	FrontElem=FrontCell->Data;
	free(FrontCell);
	
	return FrontElem;
}

void AddQ(LinkQuene *Ptrq,int item)
{
	QNode *RearCell;
	if(Ptrq->front==NULL)
	{
		RearCell=(struct Node *)malloc(sizeof(struct Node));
		Ptrq->rear=Ptrq->front=RearCell;
		RearCell->Data=item;
	}
	else
	{
		RearCell=(struct Node *)malloc(sizeof(struct Node));
		RearCell->Data=item;
		RearCell->Next=Ptrq->rear->Next;
		Ptrq->rear->Next=RearCell;
		Ptrq->rear=RearCell;		
	}
}

發佈了82 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章