LinkQueue——链式队列

原创 2012年03月28日 23:35:31

链式队列实现起来很简单。

唯一需要注意的是:

在入队和出队时,需要分别处理一下队头和队尾为空的情况。

/*
** File name: LinkQueue.h
** Author: ZhouFeng
** Date: 2012/03/28
*/
#ifndef LINK_QUEUE_H
#define LINK_QUEUE_H

#define BOOL int
#define FALSE 0
#define TRUE 1
#define ERROR 0
#define SUCCESS 1

typedef int EleType;
typedef struct LQNode
{
    EleType data;
    struct LQNode *pNext;
}LQNode;
typedef struct LinkQueue
{
    LQNode *pFront;
    LQNode *pRear;
}LinkQueue;

void InitLinkQueue(LinkQueue *LQ);
BOOL IsLinkQueueEmpty(LinkQueue *LQ);
int LinkQueueAppend(LinkQueue *LQ, EleType data);
int LinkQueueDelete(LinkQueue *LQ, EleType *pData);
int GetQueue(LinkQueue *LQ, EleType *pData);
void FreeQueue(LinkQueue *LQ);

#endif


 

/*
** File name: LinkQueue.c
** Author: ZhouFeng
** Date: 2012/03/28
*/
#include <stdlib.h>
#include <stddef.h>
#include "LinkQueue.h"

void InitLinkQueue(LinkQueue *LQ)
{
    if(LQ == NULL)
    {
	return;
    }

    LQ->pFront = NULL;
    LQ->pRear = NULL;
}

BOOL IsLinkQueueEmpty(LinkQueue *LQ)
{
    if(LQ == NULL)
    {
	return TRUE;
    }

    if(LQ->pFront == NULL)
    {
	return TRUE;
    }
    else
    {
	return FALSE;
    }
}

int LinkQueueAppend(LinkQueue *LQ, EleType data)
{
    LQNode *pNewNode;
    
    if(LQ == NULL)
    {
	return ERROR;
    }

    pNewNode = (LQNode*)malloc(sizeof(LQNode));
    pNewNode->data = data;
    pNewNode->pNext = NULL;
    
    if(LQ->pRear != NULL)
    {
	LQ->pRear->pNext = pNewNode;
    }
    LQ->pRear = pNewNode;

    if(LQ->pFront == NULL)
    {
	LQ->pFront = pNewNode;
    }

    return SUCCESS;
}

int LinkQueueDelete(LinkQueue *LQ, EleType *data)
{
    LQNode *pDel;
    
    if(LQ == NULL || data == NULL)
    {
	return ERROR;
    }

    if(LQ->pFront == NULL)
    {
	return ERROR;
    }

    *data = LQ->pFront->data;
    pDel = LQ->pFront;
    LQ->pFront = LQ->pFront->pNext;

    if(LQ->pFront == NULL)
    {
	LQ->pRear = NULL;
    }
    free(pDel);

    return SUCCESS;
}

int GetQueue(LinkQueue *LQ, EleType *pData)
{
    if(LQ == NULL || LQ->pFront == NULL || pData == NULL)
    {
	return ERROR;
    }

    *pData = LQ->pFront->data;

    return SUCCESS;
}

void FreeQueue(LinkQueue *LQ)
{
    LQNode *pDel;
    
    if(LQ == NULL)
    {
	return;
    }

    while(LQ->pFront != NULL)
    {
	pDel = LQ->pFront;
	LQ->pFront = LQ->pFront->pNext;
	free(pDel);
    }

    LQ->pRear = LQ->pFront = NULL;
}

 

Java实现LinkQueue

1.结点类 package edu.tcu.soft; /*结点类*/ public class Node { private T data; private Node nextNode; ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

LinkQueue

using namespace std; #include #define OK 1 #define ERROR -1 #define TRUE 1 #define FALSE 0...

Python入门:全站url爬取

作为一个安全测试人员,面对一个大型网站的时候,手工测试很有可能测试不全,这时候就非常需要一个通用型的网站扫描器。当然能直接扫出漏洞的工具也有很多,但这样你只能算是一个工具使用者,对于安全测试你还远远不...

链式队列的实现LinkQueue

//队列的链式存储结构 #include #include #include typedef int DataType; //队列节点存储结构 typedef struct Node { Dat...

数据结构封装之《LinkQueue链式队列》

学习记录

迷宫最短路径问题(ShortestPath)的求解——利用链式队列

迷宫最短路径问题(ShortestPath)的求解——利用链式队列 注:借助于栈求解迷宫问题时,并不能保证找到一条从迷宫入口到迷宫出口的最短路径。而借助于队列,可以找到从迷宫入口到迷宫出口的最短路径...
  • cainv89
  • cainv89
  • 2016年06月05日 12:09
  • 2076

队列——顺序存储与链式存储

顺序存储: #include #include using namespace std; const int MAXSIZE=105; typedef struct Queue { in...

队列在Java类库中的链式表示及实现——LinkedList

队列是一种先进先出的数据结构。它主要包含两种操作: (1)入队, 向队尾添加一个元素; (2)出队,从队首删除一个元素。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LinkQueue——链式队列
举报原因:
原因补充:

(最多只允许输入30个字)