typedef struct list//创建队列中的链式结构
{
datatype data;//数据域
struct list* next;//指针域
}list;
typedef struct queue//创建队列
{
list* front;//队头
list* rear;//队尾
}queue;
void initqueue(queue* q)//初始化队列
{
q->front = q->rear = (list*)malloc(sizeof(list));//使队头和队尾指向同一块内存区域
if (q->front == NULL)
{
printf("error\n");
return;
}
q->front->next = NULL;//队头(队尾)的下一个节点都是空
}
bool isempty(queue* q)
{
if (q->front == q->rear || q->front->next == NULL)
{
return true;
}
return false;
}
void enqueue(queue* q)
{
printf("输入入队的元素值\n");
datatype element;
scanf("%d", &element);
list* newnode = (list*)malloc(sizeof(list));
if (newnode == NULL)
{
printf("error\n");
return;
}
newnode->next = NULL;
newnode->data = element;//12345
q->rear->next = newnode;// 12345
q->rear = newnode; // f r
}
datatype outqueue(queue* q)
{
if (q->front == q->rear || q->front->next == NULL)
{
printf("empty\n");
exit(1);
}
list* pointer;
datatype temp;
pointer = q->front->next;
temp = pointer->data;
q->front->next = pointer->next; //12345
if (pointer == q->rear) // f
{ // r
//printf("empty\n");
q->rear = q->front;
}
return temp;
}
int main()
{
queue q;
initqueue(&q);//初始化队列
bool flag = isempty(&q);
if (!flag)
{
printf("error\n");
return -1;
}
int i = 0;
printf("要加入几个元素\n");
int n;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
enqueue(&q);
}
for (i = 0; i < 5; i++)
{
printf("%d ", outqueue(&q));
}
return 0;
}
标签:return,队列,printf,list,next,实现,链式,front,rear
From: https://blog.csdn.net/Aishangyuwen/article/details/137213134