C语言队列函数中pop,C语言_队列的基本操作

本片博客主要内容:

创建新结点

初始化队列

入队列

出队列

返回对头元素

返回队尾元素

计算队列长度

判断队列是否为空,为空返回1,否则返回零

###1、初始化队列

void QueueInit (Queue* q)//初始化队列

{

QNode *cur = (QNode *)malloc (sizeof (QNode));

if (NULL == cur)

{

perror ("InitQueue::malloc >>");

return ;

}

q->front = cur;

q->rear = cur;

}

###2、创建新结点

QNode* QBuyNode ()

{

QNode* newnode = (QNode *) malloc (sizeof (QNode));

if (newnode == NULL)

{

perror ("QBuyNode :: malloc >>");

return NULL;

}

newnode->data = 0;

newnode->pNext = NULL;

return newnode;

}

###3、入队列

void QueuePush (Queue* q, QDataType data)//入队列

{

QNode* cur = NULL;

assert (q != NULL);

cur = QBuyNode ();

q->rear->data = data;

q->rear ->pNext = cur;

cur->pNext = NULL;

q->rear = cur;

printf ("入队操作成功!\n");

}

###4、出队列

void QueuePop (Queue *q)//出队列

{

QNode *cur = NULL;

QDataType ret;

if (q->front == q->rear )

{

printf ("队列为空,操作失败");

return ;

}

cur = q->front ->pNext;

free (q->front);

q->front = NULL;

q->front = cur;

printf ("出对操作成功!\n");

}

###5、求队列长的

int QueueSize (Queue *q)

{

int size = 0;

QNode *cur = q->front;

while (cur != q->rear)

{

size++;

cur = cur->pNext;

}

return size;

}

###8、判断队列是否为空

int IsQueueEmpty (Queue *q)

{

return q->front == q->rear;

}

###9、返回对头元素

QDataType QueueFront (Queue *q)//返回对头元素

{

if (q->front == q->rear)

{

printf ("队列为空,操作失败!!\n");

return ERROR;

}

return q->front->data;

}

###10、返回队尾元素

QDataType QueueRear (Queue *q)//返回队尾元素

{

QNode *cur = NULL;

if (q->front == q->rear)

{

printf ("队列为空,操作失败!!\n");

return ERROR;

}

cur = q->front->pNext;

while (cur->pNext != q->rear)

{

cur = cur->pNext;

}

return cur->data;

}

测试结果:

52d5c371bd01acd2382b9ac1d4e79b8e.png

头文件:

#ifndef __sqeue_h__

#define __sqeue_h__

#include #include #include #define OK 1

#define ERROR 0

typedef int QDataType;

typedef struct QNode

{

QDataType data;

struct QNode* pNext;

}QNode;

typedef struct

{

QNode *front;//队尾指针

QNode *rear;//对头指针

}Queue;

QNode* QBuyNode ();//创建新结点

void QueueInit (Queue* q);//初始化队列

void QueuePush (Queue* q, QDataType data);//入队列

void QueuePop (Queue *q);//出队列

QDataType QueueFront (Queue *q);//返回对头元素

QDataType QueueRear (Queue *q);//返回队尾元素

int QueueSize (Queue *q);//计算队列长度

int IsQueueEmpty (Queue *q);//判断队列是否为空,为空返回1,否则返回零

#endif

测试代码:

#include "queue.h"

void test_1()

{

Queue q ;

QDataType ret = 0;

int IsEmpty;

QueueInit (&q);

QueuePush (&q, 1);

QueuePush (&q, 4);

QueuePush (&q, 3);

QueuePush (&q, 2);

printf ("对头元素为:%d\n", QueueFront (&q));//返回对头元素

printf ("队尾元素为:%d\n", QueueRear (&q));

QueuePop (&q);

QueuePop (&q);

IsEmpty = IsQueueEmpty(&q);

if (IsEmpty == 0)

{

printf ("队列不为空\n");

}

else

{

printf ("队列为空\n");

}

printf ("队列的长度为:%d\n", QueueSize (&q));

QueuePop (&q);

QueuePop (&q);

QueuePop (&q);

IsEmpty = IsQueueEmpty(&q);

if (IsEmpty == 0)

{

printf ("队列不为空\n");

}

else

{

printf ("队列为空\n");

}

printf ("队列的长度为:%d\n", QueueSize (&q));

}

int main()

{

test_1();

system ("pause");

return 0;

}

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值