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;
    } 
    

      

  • 相关阅读:
    Http请求头与响应头
    获取ip位置方法
    简单的Http Server实现
    HTTP
    long、int与byte数组之间的相互转换
    GlusterFS简单配置
    创建线程池
    网络编程socket
    面向对象-进阶篇
    面向对象-初级篇
  • 原文地址:https://www.cnblogs.com/mjn1/p/11441611.html
Copyright © 2011-2022 走看看