c语言简单的循环链队列,队列(循环,链式)C语言

一、链表结构的队列

#include"stdlib.h"

#include"stdlio.h"

typedef struct QNode

{

int data;

struct QNode *next;

}QNode,*QueuePrt;

typedef struct

{

QueuePrt front, rear;

}LinkQueue;

int InitQueue(LinkQueue *LQ)

{

LQ->front = LQ->rear =

(QueuePrt)malloc(sizeof(QNode));

if (LQ->front == NULL)

return 1;

LQ->front->next = NULL;

return 0;

}

void DestoryQueue(LinkQueue *LQ)

{

while (LQ->front)

{

LQ->rear =

LQ->front->next;

free(LQ->front);

LQ->front = LQ->rear;

}

}

int IsEmpty(LinkQueue *LQ)

{

return (LQ->front ==

LQ->rear);

}

void EnterQueue(LinkQueue *LQ, int Elem)

{

QueuePrt p;

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

p->data = Elem;

p->next = NULL;

LQ->rear->next = p;

LQ->rear = p;

}

void DeleteQueue(LinkQueue *LQ, int *Elem)

{

QueuePrt p;

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

p = LQ->front->next;

*Elem = p->data;

LQ->front->next =

p->next;

if (LQ->rear == p)

LQ->rear = LQ->front;

free(p);

}

LinkQueue MyQueue;

int main()

{

int Temp;

InitQueue(&MyQueue);

for(int i = 0;i<5;i++)

EnterQueue(&MyQueue, i);

for (int i = 0; i < 5; i++)

{

DeleteQueue(&MyQueue,

&Temp);

printf("The member of myqueue is :%d\r\n",Temp);

}

system("pause");

}

二、数组形式的循环队列

#include‘’stdio.h‘’

#include‘’stdlib.h‘’

​#define QUEUE_MAX_SIZE

100

typedef struct

{

int Data[QUEUE_MAX_SIZE];

int Front;

int Rear;

}ArrayQueue;

void InitQueue(ArrayQueue *Q)

{

Q->Front = 0;

Q->Rear = 0;

}

int QueueLength(ArrayQueue Q)

{

return (Q.Rear - Q.Front + QUEUE_MAX_SIZE)%QUEUE_MAX_SIZE;

}

int EnterQueue(ArrayQueue *Q,int Elem)

{

if ((Q->Rear + 1) % QUEUE_MAX_SIZE ==

Q->Front)

return 1;

Q->Data[Q->Rear] = Elem;

Q->Rear = (Q->Rear + 1) %

QUEUE_MAX_SIZE;

return 0;

}

int DeleteQueue(ArrayQueue *Q, int *e)

{

if (Q->Front == Q->Rear)

return 1;

*e = Q->Data[Q->Front];

Q->Front = (Q->Front + 1) %

QUEUE_MAX_SIZE;

return 0;

}

ArrayQueue MyQueue;

int main()

{

int temp;

InitQueue(&MyQueue);

for (int i = 0; i < 5; i++)

{

EnterQueue(&MyQueue,i);

}

printf("The length of myqueue is :%d\r\n",

QueueLength(MyQueue));

for (int i = 0; i < 5; i++)

{

DeleteQueue(&MyQueue,

&temp);

printf("The member of myqueue is :%d\r\n", temp);

}

system("pause");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值