首页 > 其他分享 >单链表队列

单链表队列

时间:2024-04-26 20:35:28浏览次数:18  
标签:LinQue 单链 函数 队列 Head next Phead New

单链表队列

队列:遵循先进先出

1.创建初始化队列

/*****************************************************************************
*                 函数名称:     LinQue_Create
*                 函数功能:    创建头结点
*                 函数参数:    NONE
*                 返回结果:    Head    返回头结点的地址
*                 注意事项:    NONE
*                 函数作者:    [email protected]
*                 创建日期:    2024/4/26
*                 修改历史:    2024/4
*                 函数版本:    1.0
*
*****************************************************************************/
//创建初始化链表
LinQue_t* LinQue_Create(void)
{
    //为头结点申请空间
    LinQue_t* Head = ( LinQue_t*)calloc(1,sizeof(LinQue_t));
    //错误判断
   if (NULL == Head)
	{
		perror("Calloc 内存申请失败");
		return NULL;
	}
   //头结点指向空
    Head->next = NULL;

    return Head;
}

2.创建新元素并完成初始化
/*****************************************************************************
*                 函数名称:     LinQue_New
*                 函数功能:    创建新元素并初始化
*                 函数参数:
*                          @   data   新元素的值
*                 返回结果:
*                 注意事项:
*                 函数作者:    [email protected]
*                 创建日期:    2024/4/26
*                 修改历史:    2024/4
*                 函数版本:    1.0
*
*****************************************************************************/

//创建新结点
LinQue_t* LinQue_New(DataType_t data)
{
    //为新结点申请空间
     LinQue_t* New = ( LinQue_t*)calloc(1,sizeof(LinQue_t));
     //错误判断
    if (NULL == New)
	{
		perror("Calloc 内存申请失败");
		return NULL;
	}
    //新结点初始化
    New->data = data;
    New->next = NULL;

    return New;

}
3.遍历队列
/*****************************************************************************
*                 函数名称:     LinQue_show
*                 函数功能:    遍历队列
*                 函数参数:
*                          @Head    操作的队列
*                 返回结果:    布尔型
*                 注意事项:    NONE
*                 函数作者:    [email protected]
*                 创建日期:    2024/4/26
*                 修改历史:    2024/4
*                 函数版本:    1.0
*
*****************************************************************************/
//遍历队列
bool LinQue_show( LinQue_t* Head )
{
    //备份头结点
    LinQue_t* Phead = Head;
   
    //判断链表是否为空
    if(Head->next == NULL){
        printf("该单链表队列为空\n");
        return false;
    }
    //遍历链表
    while (Phead->next)
    {
        Phead = Phead->next; 
        printf("data = %d\n",Phead->data);
    }

    return true;

}
4.尾部插入队列元素
/*****************************************************************************
*                 函数名称:     LinQue_RearAdd
*                 函数功能:
*                 函数参数:
*                          @Head    操作的队列
*                          @data    插入的元素的值
*                 返回结果:    布尔型
*                 注意事项:    NONE
*                 函数作者:    [email protected]
*                 创建日期:    2024/4/26
*                 修改历史:    2024/4
*                 函数版本:    1.0
*
*****************************************************************************/
//尾插
bool LinQue_RearAdd(LinQue_t* Head,DataType_t data)
{
    //备份头结点
    LinQue_t* Phead = Head;
    //创建新结点
    LinQue_t* New  = LinQue_New(data);
    if(New == NULL){

        printf("加入元素失败\n");
        return false;
    }
    //判断链表是否为空
    if(NULL == Head->next){
        Head->next = New;
        return true;
    }
    //链表不为空
    //遍历链表
    while (Phead->next)
    {
        Phead = Phead->next; 
    }
    Phead->next = New;
   
    return true;

}
5.头部删除队列元素
/*****************************************************************************
*                 函数名称:     LinQue_FrontDel
*                 函数功能:    删除队列元素
*                 函数参数:
*                          @Head    操作的队列
*                 返回结果:   布尔型 
*                 注意事项:    NONE
*                 函数作者:    [email protected]
*                 创建日期:    2024/4/26
*                 修改历史:    2024/4
*                 函数版本:    1.0
*****************************************************************************/
//头删
bool LinQue_FrontDel(LinQue_t* Head)
{
    //备份头结点
    LinQue_t* Phead = Head->next;

    //判断链表是否为空
    if(NULL == Head->next){
        printf("链表为空,删除失败\n");
        return false;
    }

    //删除首结点
    Head->next  = Phead->next;
    Phead->next = NULL;
    free(Phead);
    return true;
}

标签:LinQue,单链,函数,队列,Head,next,Phead,New
From: https://www.cnblogs.com/waibibabu-/p/18160814

相关文章

  • 单链表的头插法的实现
    /***@filename: 文件名称*@brief单链表的头插法的实现*@[email protected]*@date2024/04/26*@version1.0:版本*@property:属性介绍*@note补充注意说明*CopyRight(c)[email protected]*/#......
  • 数据结构—单链表队列头删尾插
    单链表队列的头删尾插/*************************************************/***@filename: 单链表队列的头删尾插.md*@brief实现对单链表队列的头删尾插*@[email protected]*@date2024/04/26*@version1.0:在下坂本,有何贵干*@property:no......
  • 循环队列
    /***********************************************************************************************************该程序实现循环队列元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以循环队列中元素*的数据类型为DataType_t,用户可以根据实际情况修改......
  • 两个栈模拟一个队列(Stacks Imitate Queue)
    /****************************************************************************@filename: :StacksSimulateQueue*@brief :两个栈实现队列的功能*@author :[email protected]*@date :2024/04/26*@version1.0 :V1.0*@property :None*@not......
  • C语言数据结构:链式队列的创建及其出入队操作
    /**********************************************************************************************************该程序实现链式队列元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以链式队列中元素*的数据类型为DataType_t,用户可以根据实际情况修改......
  • 顺序循环队列的接口设计
    /***********************************************************************************************************该程序实现循环队列元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以循环队列中元素*的数据类型为DataType_t,用户可以根据实际情况......
  • 双向循环链表队列的接口设计
    /***********************************************************************************************************该程序实现循环队列元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以循环队列中元素*的数据类型为DataType_t,用户可以根据实际情况......
  • 环形队列
    【简介】ringbuffer/circularbuffer又名环形队列/环形缓冲区,其通过开辟固定尺寸的内存来实现反复复用同一块内存的目的。由于预先开辟了固定尺寸的内容,所以当数据满的时候,可以有两种处理方式,具体使用哪一种按照实际需求,具体如下:1)当队列满的时候,新来的数据会覆盖最古老的......
  • 循环队列的程序接口
    循环队列的程序接口目录循环队列的程序接口队列的说明队列循环队列入队、出队头文件创建队空、队满的判断入队出队验证队列的说明队列循环队列入队、出队头文件/********************************************************************* filename: 循环队列的接口......
  • 单调队列优化DP
    单调队列优化dp单调队列可以求某固定区间的最值,所以dp中需要求某固定区间的最值则可以考虑使用单调队列优化单调队列-滑动窗口https://www.luogu.com.cn/problem/P1886/**@Author:Danc1ng*@Date:2024-04-2416:06:34*@FilePath:P1886滑动窗口[模......