一.數組實現(只用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;
}
}
初學數據結構之隊列
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.