c语言队列如何表示,队列的链式表示和实现(C语言)

#include

#include

#define OK 1;

#define ERROR 0;

#define OVERFLOW 0;

#define TURE 1;

#define FALSE 0;

typedef int Status;

typedef char QElemType; //队型数据

//链队中结点的定义

typedef struct QNode {

QElemType data; //数据域

struct QNode *next; //指针域

}QNode,*QueuePtr;

//链队的定义

typedef struct {

QueuePtr front; //队头指针

QueuePtr rear; //队尾指针

}LinkQueue;

//链队的初始化

Status InitQueue(LinkQueue *queue){

queue->front=queue->rear=(QueuePtr)malloc(sizeof(QNode));

if(!queue->front) return OVERFLOW;

queue->front->next=NULL; //头结点next域置空

return OK;

}

//链队的销毁

Status DestroyQueue(LinkQueue *queue){

QNode *p;

while(queue->front){

p=queue->front->next;

free(queue->front);

queue->front=p;

}

return OK;

}

//元素入队

Status EnQueue(LinkQueue *queue,QElemType elem){

QueuePtr p=(QueuePtr)malloc(sizeof(QNode));

if(!p) return OVERFLOW;

p->data=elem;

p->next=NULL;

queue->rear->next=p;

queue->rear=p;

return OK;

}

//元素出队

Status DeQueue(LinkQueue *queue,QElemType *elem){

if(queue->front==queue->rear) return ERROR;

QueuePtr p=queue->front->next; //p指向首元(队头元素)

*elem=p->data; //出队元素的值保存到elem

queue->front->next=p->next;

if(p==queue->rear) queue->rear=queue->front; //如果出队的是最后一个元素

free(p);

return OK;

}

//取队头元素

QElemType GetHead(LinkQueue queue){

if(queue.front==queue.rear) return ERROR;

return queue.front->next->data;

}

int main(void){

LinkQueue queue1; //定义一个链队

//初始化

Status initQueueResult = InitQueue(&queue1);

printf("队列queue1初始化结果:%d\n",initQueueResult);

//元素入队

QElemType elem1='Y',elem2='C';

Status enResult = EnQueue(&queue1,elem1);

printf("入队执行结果:%d\n",enResult);

EnQueue(&queue1,elem2); //将elem2也入队

printf("队尾元素值:%c\n",queue1.rear->data);

//元素出队

QElemType elem3; //出队的数据放入elem3

Status deResult = DeQueue(&queue1,&elem3);

printf("出队执行结果:%d\n",deResult);

printf("出队元素值:%c\n",elem3);

printf("队尾元素值:%c\n",queue1.rear->data);

//取队头元素

QElemType queueHeadValue = GetHead(queue1);

printf("获取队头元素值:%c\n",queueHeadValue);

//链队销毁

Status destroyResult = DestroyQueue(&queue1);

printf("链队销毁结果:%d\n",destroyResult);

printf("\nEND");

return 0;

}

9a3157fdb3c5ed415fb6217b7009b5c4.png

标签:return,队列,next,queue,queue1,链式,front,C语言,rear

来源: https://www.cnblogs.com/petitepluie/p/14599401.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值