zoukankan      html  css  js  c++  java
  • 队列——阵列实现

    简介:


           队列的实现除了链表外。也可用数组实现。


    分析描写叙述:


          队列的结构:

    typedef int ElementType;
    typedef struct QueueRecord{
    	int Capacity;
    	int Front;
    	int Rear;
    	int Size;
    	ElementType *Array;
    }QueueRecord, *Queue;
    

           创建队列:

    void MakeEmpty(Queue Q)
    {
    	Q->Size  = 0;
    	Q->Front = 1;
    	Q->Rear  = 0;
    }
    
    Queue CreateQueue(int MaxElements)
    {
    	Queue QueueHead  = (Queue)malloc(sizeof(struct QueueRecord));
    	if(QueueHead == NULL){
    		fprintf(stderr, "out of sapce .
    ");
    		exit(0);
    	}
    	QueueHead->Array = (ElementType *)malloc(sizeof(ElementType)*MaxElements);
    	if(QueueHead->Array == NULL){
    		fprintf(stderr, "Out of sapce .
    ");	
    	}
    	QueueHead->Capacity  = MaxElements;
    
    	MakeEmpty(QueueHead);
    
    	return QueueHead;
    }
    

           推断队列为空或队列已满:

    int IsEmpty(Queue Q)
    {
    	return Q->Size == 0;
    }
    
    int IsFull(Queue Q)
    {
    	return Q->Size == Q->Capacity;
    }
    

           入队列:

    static int
    Succ(int Value, Queue Q)
    {
    	if(++Value == Q->Capacity)
    			Value = 0;
    	return Value;
    }
    
    void Enqueue(ElementType data, Queue Q)
    {
    	if(IsFull(Q))
    		fprintf(stderr, "full queue.
    ");
    	else{
    		Q->Size++;
    		Q->Rear = Su(Q->Rear, Q);	
    		Q->Array[Q->Rear] = X;
    	}
    		
    }
    

            出队列:

    void Dequeue(Queue Q)
    {
    	if(IsEmpty(Q))
    		fprintf(stderr, "Empty queue.
    ");
    	else{
    		Q->Size--;
    		Q->Front = Succ(Q->Front, Q);	
    	}
    }
    


    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    JQuery 中 某个标签 remove 时添加特效方法
    JQuery each 方法
    JQuery 中 animate() 方法使用
    final关键字
    坑爹之Server Farm
    正确使用Google英文版
    SQLServer2014下载地址
    微软这是要作死啊
    Why not me ?
    页面无法调试?
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4810161.html
Copyright © 2011-2022 走看看