数据结构学习第八课(链式队列)

本文详细介绍了链式队列的数据结构及其操作,包括创建队列、插入节点(入队)、删除节点(出队)、获取队头和队尾元素、检查队列是否为空以及获取队列大小的方法。这些基本操作是链式队列在数据结构和算法中常见的应用。
摘要由CSDN通过智能技术生成
1,链式队列

规则:先进先出;

1.1链表基本框架
typedef int Data;
typedef struct _Node
{
	Data data;
	struct _Node* next;
}Node;
typedef struct _LinkQueue
{
	int size;
	Node* front;
	Node* tail;
}LinkQueue;
1.2创建一个队列
LinkQueue* createLinkQueue()
{
    LinkQueue* que = calloc(1, sizeof(LinkQueue));
    assert(que != NULL);
    que->front = calloc(1, sizeof(Node));
    assert(que->front != NULL);
    que->tail = que->front;
    que->size = 0;

    return que;
}
1.3创建一个新结点
static Node* createNode(Data val)
{
    Node* newNode = calloc(1, sizeof(Node));
    assert(newNode != NULL);
    newNode->data = val;
    return newNode;
}
1.4入队–队尾
//入队--队尾 
void push(LinkQueue* que, Data val)
{
    Node* newNode = createNode(val);
    if (newNode==NULL)
    {
        return;
    }
    que->tail->next = newNode;
    que->tail = newNode;
    que->size++;
}
1.5出队–队头 删除
//出队--队头 头删
void pop(LinkQueue* que)
{
    if (empty(que))
    {
        return;
    }
    Node* delNode = que->front->next;
    que->front->next = delNode->next;
    free(delNode);
    que->size--;
}
1.6获取队头元素
//获取队头元素
Data front(LinkQueue* que)
{
    assert(!empty(que));
    return que->front->next->data;
}
1.7获取队尾元素
//获取队尾元素
Data back(LinkQueue* que)
{
    assert(!empty(que));
    return que->tail->data;
}
1.8获取大小
//获取大小
int size(LinkQueue* que)
{
    return que->size;
}
1.9判空
//判空
#include<stdbool.h>
bool empty(LinkQueue* que)
{
    return que->size == 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值