记下《程序员面试宝典》的实现队列入队/出队操作
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
int data;
struct student *next;
} node;
typedef struct linkquene
{
node *first,*rear; // 队首,队尾
} queue;
// 入队
queue *insert(queue *HQ, int x)
{
node *s;
s = (node *)malloc(sizeof(node));
s->data = x;
s->next = NULL;
if(HQ->rear == NULL) // 队尾为空,说明队列此时没有元素
{
HQ->first = s;
HQ->rear = s;
}
else
{
HQ->rear->next = s;
HQ->rear = s;
}
return HQ;
}
// 队列出队
queue *del(queue *HQ)
{
node *p;
int x;
if(HQ->first == NULL) // 队列中没有元素
printf("\nNo a node!\n");
else
{
x = HQ->first->data;
p = HQ->first;
if(HQ->first == HQ->rear) // 队列中只有一个元素
{
HQ->first = NULL;
HQ->rear = NULL;
}
else
{
HQ->first = HQ->first->next;
}
free(p);
}
return HQ;
}
// 输出队列
void print(queue *HQ)
{
node *p;
p = HQ->first;
while(p != NULL)
{
printf("%d <= ",p->data);
p = p->next;
}
printf("NULL\n");
}
int main()
{
queue *myqe = new queue();
// 入队
for(int i = 1; i < 6; i++)
{
myqe = insert(myqe,i);
print(myqe);
}
// 出队
for(int i = 1; i < 6; i++)
{
myqe = del(myqe);
print(myqe);
}
return 0;
}
主函数第一句 queue *myqe = new queue();,我也不知道为什么这么写……