zoukankan      html  css  js  c++  java
  • 链队列基本运算(实验题3.4)

    虽然都是基本的数据结构,也很简单,但是亲自打下代码还是收获不小。

    都是编译过了的。

    //
    //LiQueue.h
    //链队基本运算
    //2013-10-15 22:49
    //
    
    #pragma once
    
    typedef int ElemType;
    
    struct QNode
    {
     	ElemType data;
    	QNode* next;
    };
    
    struct LiQueue
    {
    	QNode* front;
    	QNode* rear;
    };
    
    
    void InitQueue(LiQueue* &q);
    
    void ClearQueue(LiQueue* &q);
    
    void enQueue(LiQueue* &q,ElemType e);  //进队
    
    int deQueue(LiQueue* &q,ElemType& e);  //出队
    
    void DisQueue(LiQueue* q);
    


     

    #include "LiQueue.h"
    #include <malloc.h>
    #include <stdio.h>
    
    
    void InitQueue( LiQueue* &q )
    {
    	q = (LiQueue*)malloc(sizeof(LiQueue));
    	q->front = q->rear = NULL;
    }
    
    void ClearQueue( LiQueue* &q )
    {
    	QNode* p = q->front,*t = p->next;
    	while( NULL != t)
    	{
    		free(p);
    		p = t;
    		t = t->next;
    	}
    }
    
    void enQueue( LiQueue* &q,ElemType e )
    {
    	QNode* s = (QNode*)malloc(sizeof(LiQueue));
    	s->data = e;
    	s->next = NULL;
    
    	if (q->rear == NULL)  //空队
    	{
    		q->rear = q->front = s;
    	} 
    	else
    	{
    		q->rear->next = s;
    		q->rear = s;
    	}
    }
    
    int deQueue( LiQueue* &q,ElemType& e )
    {
    	if (q->rear == NULL)  //空队
    	{
    		return 0;
    	}
    	
    	QNode* t = q->front;
    	e = q->front->data;
    
    	if ( q->front == q->rear)
    	{
    		q->front = q->rear = NULL;
    	}
    	else
    	{
    		q->front = q->front->next;
    	}
    
    	free(t);
    	return 1;
    }
    
    void DisQueue( LiQueue* q )
    {
    	if (q->front == NULL)
    	{
    		return;
    	}
    	QNode* p = q->front;
    	while(p != q->rear)
    	{
    		printf("%d,",p->data);
    		p = p->next;
    	}
    	printf("%d,",p->data);
    
    	printf("
    ");
    }


     

    #include "LiQueue.h"
    
    int main()
    {
    	LiQueue* q;
    	InitQueue(q);
    	enQueue(q,1);
    	DisQueue(q);
    	enQueue(q,2);
    	DisQueue(q);
    	enQueue(q,3);
    	DisQueue(q);
    	enQueue(q,4);
    	DisQueue(q);
    	enQueue(q,5);
    	DisQueue(q);
    	ElemType data;
    	deQueue(q,data);
    	DisQueue(q);
    
    	ClearQueue(q);
    	return 0;
    }


     

  • 相关阅读:
    第二阶段冲刺总结09
    第二阶段冲刺总结08
    第二阶段冲刺总结07
    51nod 1799 二分答案(分块打表)
    51nod 1574 排列转换(贪心+鸽巢原理)
    Codeforces 618D Hamiltonian Spanning Tree(树的最小路径覆盖)
    Codeforces 627D Preorder Test(二分+树形DP)
    BZOJ 2427 软件安装(强连通分量+树形背包)
    BZOJ 2467 生成树(组合数学)
    BZOJ 2462 矩阵模板(二维hash)
  • 原文地址:https://www.cnblogs.com/phisy/p/3371889.html
Copyright © 2011-2022 走看看