• 链队列基本运算(实验题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;
    }


     

  • 相关阅读:
    Linux命令笔记
    拆功放板笔记
    从输入 URL 到页面加载完的过程中都发生了什么---优化
    python学习笔记(三)
    python学习笔记(二)
    python学习笔记(一)
    公交wifi运营平台分析
    testNG小试牛刀
    maven小项目注册服务(三)--web模块
    用maven进行测试
  • 原文地址:https://www.cnblogs.com/phisy/p/3371889.html
Copyright © 2020-2023  润新知