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

    引言:

       

           队列与栈的差别是队列是先进先出的数据结构。

    为了使得出入队列easy。能够引入队列头指针和队列尾指针。


    分析描写叙述:


           队列的结点结构。

    typedef int QElemType;
    typedef struct QNode{
    	QElemType	data;
    	struct QNode *next;
    }QNode, *QueuePtr;
    
    typedef struct{
    	QueuePtr	front;//队列的头指针
    	QueuePtr	rear;//队列的尾指针
    }LinkQueue;
    LinkQueue Q;

            队列的初始化。

    LinkQueue  InitQueue(LinkQueue *Q)
    {
    	QueuePtr  tmp;
    	tmp = (QueuePtr)malloc(sizeof(QNode));
    	if(tmp == NULL){
    		printf("create queue error.
    ");
    		return ;
    	}
    	Q->front = tmp;
    	Q->rear = Q->front;
    	Q->front->next = NULL;
    
    	return *Q;
    }

             入队列操作。

    void EnQueue(LinkQueue *Q, QElemType e)
    {
    	QueuePtr	tmp;
    	tmp = (QueuePtr)malloc(sizeof(QNode));
    	if(tmp == NULL){
    		printf("create queue error.
    ");	
    		return ;
    	}
    	tmp->data = e;
    	tmp->next = NULL;
    	Q->rear->next = tmp;
    	Q->rear = tmp;
    
    	return;
    }

            出队列操作。

    void DeQueue(LinkQueue *Q, QElemType *e)
    {
    	QueuePtr tmp;
    	if(Q->front == Q->rear){
    		printf("the queue is empty.
    ");	
    		return ;
    	}
    	tmp = Q->front->next;
    	*e = tmp->data;
    	Q->front->next = tmp->next;
    	if(Q->rear == tmp)
    		Q->rear = Q->front;
    	free(tmp);
    	return;
    }

            取队列的头元素。

    void GetHead(LinkQueue *Q, QElemType *e)
    {
    	if(Q->front == Q->rear)
    		return;
    	*e = Q->front->next->data;
    	return ;
    }

              推断队列是否为空。

    int QueueEmpty(LinkQueue *Q)
    {
    	if(Q->front == Q->rear)
    		return TRUE;
    	return FALSE;
    }

             清空队列。

    void ClearQueue(LinkQueue *Q)
    {
    	if(Q->front == Q->rear){
    		printf("the queue is empty.
    ");
    		return;
    	}
    
    	while(Q->front->next){
    		Q->rear = Q->front->next->next;
    		free(Q->front->next);	
    		Q->front = Q->front->next;
    	}
    	Q->front->next = NULL;
    	Q->rear = Q->front;
    	return;
    }

             求队列的长度。

    int QueueLength(LinkQueue Q)
    {
    	int length = 0;
    	LinkQueue Tmp= Q。
    
    	while(Tmp.front != Tmp.rear){
    		length++;
    		Tmp.front = Tmp.front->next;	
    	}
    
    	return length - 1;
    }


  • 相关阅读:
    python xlwt 设置单元格样式-合并单元格
    Ubuntu 16.04配置国内高速apt-get更新源
    python3.5 安装python3-tk
    m4a 转 wav
    hmm前后向算法
    hmm三个问题
    veterbi
    马尔科夫和隐马尔科夫
    Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/ma ven/cli/Maven/java与javac版本不一致问题
    spring 配置定时任务
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6852143.html
Copyright © 2011-2022 走看看