队列的实现(顺序表和链表)

本文介绍了队列的基本概念,强调了其先进先出的特性,并详细阐述了如何使用顺序表和链表来实现队列,包括创建、入队、出队、获取队首元素和销毁队列等操作。同时,提供了两种具体实现方式的概述。
摘要由CSDN通过智能技术生成

队列
这里写图片描述

队列其最主要的特点就是先进先出,因此在用顺序表和链表实现它的时候就要注意,它的入栈和出栈就要使用头插和尾删或者尾插和头插,他们的对应关系不能搞错。

队列实现有以下动作:

  1. 创建队列
  2. 入队列
  3. 出队列
  4. 取队列首元素
  5. 销毁队列

队列的两种实现:

顺序表实现:

//SqQueue.h
#pragma once                                                                                                                                                                                   

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 1000

typedef char SqQueueType;

typedef struct SqQueue{
    SqQueueType data[MAXSIZE];
    size_t size;
    size_t head;
    size_t tail;
}SqQueue;
//初始化
void SqQueueInit(SqQueue* sq);
//入队列
void SqQueuePush(SqQueue* sq,SqQueueType value);
//出队列
void SqQueuePop(SqQueue* );
//取队列首元素
int SqQueueFront(SqQueue* sq, SqQueueType* value);
//销毁队列
void SqQueueDestroy(SqQueue* sq);

//SqQueue.c

  #include "SqQueue.h"

  void SqQueueInit(SqQueue* sq){
      if(sq == NULL){
          return ;//非法输入
      }   
      sq -> head = 0;
      sq -> tail = 0;
      sq -> size = 0;
  }

  void SqQueuePush(SqQueue* sq, SqQueueType value){
      if(sq == NULL){
          return ;//非法输入
      }   
      if(sq -> size >= MAXSIZE){
          return;//队列满
      }   
      sq -> data[sq -> tail++] = value;
      if(sq -> tail >= MAXSIZE){
          sq -> tail = 0;
      }   
      //q -> tail %= MAXSIZE;
      ++sq -> size;
      return;
  }
  void SqQueuePop(SqQueue* sq){
      if(sq == NULL){
          return ;//非法输入
      }
      if(sq -> size == 0){
          return ;//空队列
      }
      ++sq -> head;
      if(sq -> head >= MAXSIZE){
          sq -> head = 0;
      }
      --sq -> size;
      return;
  }


  int SqQueueFront(SqQueue* sq, SqQueueType* value){
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值