数据结构队列的链式表示

本文详细介绍了如何使用C语言实现链式队列的抽象类型定义及基本运算,包括队列的初始化、判空、入队、出队和获取队头元素等操作。通过这些基本操作,可以有效地管理和操作链式队列数据结构。

队列链式表示的抽象类型表示及相关运算(C语言实现)

文章目录

一.队列链式表示抽象类型定义
二.链式队列的基本运算

1.链式队列的抽象类型定义

#define ERROR 0
#define OK 1
#define NULLQUE 1
#define NULLDATA 0

#include <stdlib.h>

typedef int ElemType;
typedef struct LinkQue {
    ElemType data;//数据域
    struct LinkQue *next;//指针域
} LinkQueNode;
typedef struct {
    LinkQueNode *front, *rear; //头指针与尾指针
} LiQue;

2.链式队列的初始化

int InitQue(LiQue *L) {

    LinkQueNode *temp; //创建工作指针
    temp = (LinkQueNode *) malloc(sizeof(LinkQueNode));
    temp->next = NULL;  //头结点置空
    L->front = temp;    //队头指向头结点
    L->rear = temp;     //队尾指向头结点
    return OK;
    
}

3.链式队列判空

int EmptyQue(LiQue *L){
    
    if(L->front == L->rear)
        return NULLQUE;
    
    return 0;

}

4.入队

int EnterQue(LiQue *L,ElemType edata){

    LinkQueNode *temp;
    temp = (LinkQueNode *)malloc(sizeof(LinkQueNode));

    if(!temp)
        return ERROR;

    temp->data = edata;
    temp->next = NULL;
    L->rear->next = temp;//新结点入队
    L->rear = temp;//修改尾指针
    return OK;

}

5.出队

int OutQue(LiQue *L){
    
    LinkQueNode *temp;
    
    if(EmptyQue(L))
        return ERROR;//队空
    else{
        temp = L->front->next; //定位L队列原队头
        L->front->next = temp->next;//置换队头成为新队头
        free(temp);
        
        if(L->front->next == NULL)//如果原队列只有一个元素且唯一元素出队后要重置队列
            L->rear == L->front;
        return OK;
    }    
    
}

6.取队头元素

ElemType GetHead(LiQue *L) {

    LinkQueNode *temp;
    if (EmptyQue(L)) {//判对空
        return NULLDATA;
    } else {
        temp = L->front->next;//定位L队列原队头
        return temp->data;//返回队首元素
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值