最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会。
希望这些能提供给初学者一些参考。
//链队列的类型描述
typedef struct Qnode
{
ElementType data;
struct Qnode *next;
}QueueNode;
typedef struct
{
QueueNode *front, *rear;
}LinkQueue;
//初始化队列 InitQueue()
LinkQueue InitQueue()
{
p = (QueueNode *)malloc(sizeof(QueueNode));
p->next = NULL;
q.front = q.rear = p;
return q;
}
//判定队列q是否为空 QueueEmpty(q)
int QueueEmpty(LinkQueue q)
{
return (q.front == q.rear);
}
//获取队列 q 队首元素的值 GetHead(q)
ElementType GetHeat(LinkQueue q)
{
if (QueueEmpty(q))
return nil;
return q.front->next->data;
}
//将元素e入队列 AddQueue(q, e)
void AddQueue (LinkQueue *q, ElementType e)
{
p = (QueueNode *)malloc(sizeof(QueueNode));
p->data = e;
p->next = NULL;
q->rear->next = p;
q->rear = p;
}
//出队列 DeleteQueue(q)
ElementType DeleteQueue (LinkQueue *q)
{
if (QueueEmpty(*q))
return nil;
else
{
p = q->front->next;
q->front->next = p->next;
e = p->data;
if (p == q->rear)
q->rear = q->front; //队列满
free(p);
return e;
}
}