C语言队列爱吃窝窝头2023-11-302023-11-30//2022.9.27 队列//队列的特点,插入在队尾,删除在队前,先进先出.#include <stdio.h>#include <stdlib.h>//定义单链表节点类型typedef struct qlink{ int data; //数据域 struct qlink *next;//指针域}qlink;//定义链队列的类型typedef struct linkqueue{ qlink *front;//队头指针 qlink *rear;//队尾指针}linkq;linkq q;//定义一个链队列//初始化链队列void initqlink(){ q.front=(qlink *)malloc(sizeof(qlink)); if (!q.front) exit(0); q.front->next=NULL; q.rear=q.front;//空队列}//入队(插入)void enqlink(int e){ qlink *p; p=(qlink *)malloc(sizeof(qlink)); if (!p) exit(0); p->data=e; p->next=NULL; q.rear->next=p;//连接作用 q.rear=p;//修改队尾指针}//出队(删除)int deqlink(){ qlink *p; int x; if(q.rear==q.front){ printf("空队列,不进行删除\n"); exit(0); } p=q.front->next; x=p->data; q.front->next=p->next; if(p==q.rear)//如果队尾指针没有,空队列 q.rear=q.front; free(p); return x;}void main(){ int e,n; initqlink(); printf("请输入创建的队列的长度:\n"); scanf("%d",&n); printf("请输入元素:\n"); for(int i=1;i<=n;i++){ scanf("%d",&e); enqlink(e);} printf("返回删除的值:"); while(q.rear!=q.front){ printf("%d ",deqlink()); }}