目录

  • 1 第一章 绪论
  • 2 第二章 线性表
    • 2.1 单链表的案例讲解——学生信息管理系统
  • 3 第三章 栈和队列
    • 3.1 顺序栈的代码
    • 3.2 链栈的代码
    • 3.3 栈的案例源代码
    • 3.4 顺序队列的代码
    • 3.5 链队的代码
  • 4 串、数组、广义表
    • 4.1 顺序串的源代码
    • 4.2 链串的源代码
    • 4.3 串部分的课件
    • 4.4 数组部分的课件
    • 4.5 广义表的课件
  • 5 树与二叉树
    • 5.1 二叉链表法存储树代码与课件
  • 6 图
    • 6.1 图的课件
    • 6.2 图的相关源代码
  • 7 查找
    • 7.1 查找的课件
    • 7.2 查找的相关源代码
顺序队列的代码

#include "stdio.h"
#include "stdlib.h"
#define MaxSize 20        //指定队列的容量
typedef int ElemType;
typedef struct
{  ElemType data[MaxSize];    //保存队中元素
   int front,rear;        //队头和队尾指针
} SqQueue;

void InitQueue(SqQueue *&sq)    //初始化队列,其中sq为引用型参数
{
    sq=(SqQueue *)malloc(sizeof(SqQueue));
  sq->rear=sq->front=0;    //队列指针初始化
}

void DestroyQueue(SqQueue *&sq)//销毁队列
{  
    free(sq);
}
bool EnQueue(SqQueue *&sq,ElemType x)//入队
{  if ((sq->rear+1) % MaxSize==sq->front)  //队满上溢出
     return false;

sq->data[sq->rear]=x;

  sq->rear=(sq->rear+1) % MaxSize;        //队尾循环进1
 
  return true;
}
bool DeQueue(SqQueue *&sq,ElemType &x)//出队
{   if (sq->rear==sq->front)        //队空下溢出
    return false;

  x=sq->data[sq->front];

  sq->front=(sq->front+1) % MaxSize;    //队头循环进1

  return true;
}
bool GetHead(SqQueue *sq,ElemType &x)//获取队首元素
{  if (sq->rear==sq->front)        //队空下溢出
      return false;
   x=sq->data[sq->front+1];
   return true;
}
bool QueueEmpty(SqQueue *sq)//判断是否队空
{  if (sq->rear==sq->front)
      return true;
   else
     return false;
}

int main()
{
    SqQueue *S;
    ElemType e;
    InitQueue(S);//初始化测试
    
    EnQueue(S,10);//入队测试
    EnQueue(S,20);//入队测试
    EnQueue(S,30); //入队测试
    
    DeQueue(S,e);//出队测试
    printf("出队值为%d\n",e);
    
    GetHead(S,e);//获取队首元素测试
    printf("队首值为%d\n",e);
    
    DestroyQueue(S);//销毁队列测试
 }