数据结构--队列

#include<stdio.h>
#define MaxSize 100
#define ElementType int 
#define ERROR 0
struct QNode
{
    ElementType Data[MaxSize];
    int rear;
    int front;
};
typedef struct QNode* Queue;
//队列顺序存储
//入队(循环队列、环形队列)
//(5+1)对6求余=0    5%6=5

void AddQ(Queue PtrQ, ElementType item)
{
    if ((PtrQ->rear + 1) % MaxSize == PtrQ->front)
    {
        printf("队列满");
        return;
    }
    PtrQ->rear = (PtrQ->rear + 1) & MaxSize;
    PtrQ->Data[PtrQ->rear] = item;
}
//出队列
ElementType DeleteQ(Queue PtrQ)
{
    if (PtrQ->front == PtrQ->rear)
    {
        printf("队列为空");
        return ERROR;
    }
    PtrQ->front = (PtrQ->front + 1) % MaxSize;
    return PtrQ->Data[PtrQ->front];
}


//链式存储
struct Node {
    ElementType Data;
    struct Node* Next;
};//节点
struct QNode {
    struct Node* rear;//指向队尾结点
    struct Node* front;//指向队头节点
};
typedef struct QNode* Queue;
Queue PtrQ;
//不带头节点的链式对列出对操作的一个示例
ElementType Delete(Queue PtrQ)
{
    struct Node* FrontCell;
    ElementType FrontElem;
    if (PtrQ->front == NULL)
    {
        printf("队列空");
        return ERROR;
    }
    FrontCell = PtrQ->front;
    if (PtrQ->front == PtrQ->rear)
        PtrQ->front = PtrQ->rear = NULL;
    else
        PtrQ->front = PtrQ->front->Next;
    FrontElem = FrontCell->Data;
    free(FrontCell);
    return FrontElem;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值