数据结构C语言学习D8

本文介绍了顺序队列的基本概念和操作重点,包括其只能在队尾插入、队头删除的特点。详细展示了如何创建自定义类型的顺序队列,并提供了 enqueue 和 dequeue 的功能实现代码,强调了内存管理和先进先出的原则。顺序队列是线性表的一种,遵循FIFO(先进先出)原则,适用于需要按顺序处理数据的场景。
摘要由CSDN通过智能技术生成


前言

在两端操作的线性表,队列!特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。 进行插入操作的端称为队尾,进行删除操作的端称为队头。


一、重点

队列的前端front和后端rear 变量不能使用++或–操作否则会越界。应该使用%取余操作:q->rear = (q->rear + 1) % N;
q->front = (q->front + 1) % N;

二、使用步骤

1.创建自定义类型

代码如下(示例):

typedef int datatype;
#define N 128

typedef struct {
	datatype data[N];
	int front;
	int rear;
}sequeue;

2.功能实现

代码如下(示例):

// @ create a queue....
sequeue *createQueue(){
    sequeue *q;
    if((q = (sequeue *)malloc(sizeof(sequeue))) == NULL){
        printf("malloc failed!!");
        return NULL;
    }

    memset(q->data, 0, sizeof(sizeof(q->data)));
    q->front = q->rear = 0;
    return q;
}

// @ enqueue 
int enqueue(sequeue *q, MY_DATA data){
    if(!q){
        printf("your \'q\' is NULL!\n");
        return -1;
    }

    q->data[q->rear] = data;
    q->rear = (q->rear + 1) % N;

    return 0;
}

// @ dequeue
MY_DATA dequeue(sequeue *q){
    MY_DATA result;

    result = q->data[q->front];

    q->front = (q->front + 1) % N;

    return result;
}

总结

注意存取之后的内存空间的变化,先进先出的原则!
队列是限制在两端进行插入操作和删除操作的线性表
允许进行存入操作的一端称为“队尾”
允许进行删除操作的一端称为“队头”
当线性表中没有元素时,称为“空队”
特点 :先进先出(FIFO)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值