用c语言编一个小小的入列出列的程序
- 提问者网友:难遇难求
- 2021-05-04 10:04
- 五星知识达人网友:低音帝王
- 2021-05-04 11:27
你主要是想实现队列功能吧,我给你编了一个队列,具体的出列进列可随意在主函数中操作
#include <stdio.h>
#include <malloc.h>
typedef struct QNode
{
char data;
struct QNode *next;
int Queusize;
}
QNode,*QueuePtr;//定义队列结点类型
typedef struct
{
QueuePtr front;
QueuePtr rear;
}
LinkQueue;//队列的类型
void InitQueue(LinkQueue *Q)//创建队列
{
Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));
Q->front->next=NULL;
}
void EnQueue(LinkQueue *Q,char e)//将元素插入队列
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
}
char DeQueue(LinkQueue *Q)//将元素出列且返回元素的位置
{
char e;
QueuePtr p;
p=Q->front->next;
e=p->data;
Q->front->next=p->next;
if(Q->rear==p)
Q->rear=Q->front;
free(p);
return (e);
}
int QueueEmpty(LinkQueue *Q)//判断队列是否为空
{
if(Q->front==Q->rear )
return 1;
else
return 0;
}
void main()
{
LinkQueue Q;
InitQueue(&Q);
EnQueue(&Q,'1');//字符1入队列
EnQueue(&Q,'2');
EnQueue(&Q,'3');
EnQueue(&Q,'4');
EnQueue(&Q,'5');
DeQueue(&Q);//最先一个元素出列也就是1出列
DeQueue(&Q);
while(!QueueEmpty(&Q))
{
printf("%c ",DeQueue(&Q));//最后剩下的元素依次出列
}
}
- 1楼网友:妄饮晩冬酒
- 2021-05-04 12:30
堆栈