zoukankan      html  css  js  c++  java
  • MOOC 2.3 队列

    1. 循环队列

    // 队列的顺序存储实现
    #define MaxSize <存储数据元素的最大个数>
    struct QNode
    {
    	ElementType Data[MaxSize];
    	int rear;
    	int front;
    };
    typedef struct QNode *Queue;
    
    // 1. 入队
    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;
    } 
    
    // 2. 出队
    ElementType DeleteQ(Queue PtrQ)
    {
    	if(PtrQ->front == PtrQ->rear)
    	{
    		printf("队列空");
    		return REEOR;
    	}
    	else
    	{
    		PtrQ->front = (PtrQ->front + 1) % MaxSize;
    		return PtrQ->Data[PtrQ->front];
    	}
    } 
    

      

    2. 链式队列

    // 队列的链式存储
    struct Node
    {
    	ElementType Data;
    	struct Node *Next;
    };
    struct QNode
    {
    	struct Node *rear;
    	struct Node *front;
    };
    typedef struct QNode *Queue;
    Queue PtrQ;
    
    ElementType DeleteQ(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;
    }
    
    void AddQ(Queue PtrQ, ElementType item)
    {
    	struct Node node;
    	node = (struct Node *)malloc(sizeof(struct Node));
    	node->Data = item;
    	node->Next = PtrQ->front->Next;
    	PtrQ->front->Next = node;
    } 
    

      

  • 相关阅读:
    [luogu] P1440 求m区间内的最小值
    [NOI2014]起床困难综合症
    [SDOI2009]地图复原
    [USACO08JAN] Cow Contest
    【洛谷P5049】旅行(数据加强版)
    【NOIP2015】真题回顾
    【NOIP2014】真题回顾
    【UVA11987】Almost Union-Find
    【UVA11988】破损的键盘
    【UVA11134】传说中的车
  • 原文地址:https://www.cnblogs.com/mjn1/p/11441611.html
Copyright © 2011-2022 走看看