数据结构day6链式队列

主程序

#include "fun.h"

int main(int argc, const char *argv[])
{
    que_p Q=create();
    enqueue(Q,10);
    enqueue(Q,20);
    enqueue(Q,30);
    enqueue(Q,40);
    enqueue(Q,50);
    show_que(Q);
    dequeue(Q);
    show_que(Q);
    printf("len:%d\n",que_len(Q));
    free_que(Q);
    Q=NULL;
    show_que(Q);

    return 0;
}

源程序

#include "fun.h"

que_p create()
{
   que_p Q=(que_p)malloc(sizeof(que));
   if(Q==NULL)
   {
       printf("error\n");
       return NULL;
   }
   node_p H=(node_p)malloc(sizeof(node));
   if(H==NULL)
   {
       printf("error\n");
       free(Q);
       Q=NULL;
       return NULL;
   }
   H->next=NULL;
   H->len=0;
   Q->head=H;
   Q->tail=H;
   return Q;
}

int empty_que(que_p Q)
{
    if(Q==NULL)
    {
        printf("error\n");
        return -1;
    }
    return Q->head==Q->tail;
}
node_p create_new(typdata data)
{
    node_p new =(node_p)malloc(sizeof(node));
    if(new==NULL)
    {
        printf("error");
    }
    new->data=data;
    new->next=NULL;
    return new;
}
void  enqueue(que_p Q,typdata data)
{
    if(Q==NULL)
    {
        printf("erro\n");
    }
    node_p new=create_new(data);
    Q->tail->next=new;
    Q->tail=new;
    Q->head->len++;
}

void show_que(que_p  Q)
{
    if(Q==NULL)
    {
        printf("error\n");
        return;
    }
    if(empty_que(Q))
    {
       printf("Queue empty\n");
       return;
    }
    node_p H=Q->head;
    while(H->next!=NULL)
    {
        H=H->next;
        printf("%-4d",H->data);
    }
    putchar(10);
}

void dequeue(que_p Q)
{
    if(Q==NULL)
    {
        printf("error\n");
        return;
    }
    if(empty_que(Q))
    {
        printf("Queue empty\n");
        return;
    }
    printf("dequeue:%d\n",Q->head->next->data);
    node_p p=Q->head->next;
    Q->head->next=Q->head->next->next;
    free(p);
    p=NULL;
    Q->head->len--;
}
int que_len(que_p Q)
{
    if(Q==NULL)
    {
        printf("error\n");
        return-1;
    }
    return Q->head->len;
}
void free_que(que_p Q)
{
    if(Q==NULL)
    {
        printf("error\n");
        return;
    }
    
    while(Q->head->next!=NULL)
    {
        dequeue(Q);
    }
    free(Q->head);
    Q->head=NULL;
    free(Q);
    Q=NULL;
}

  头文件

#ifndef __FUN_H_
#define __FUN_H_
#include <myhead.h>

typedef int typdata;

typedef struct node
{
    union
    {
        int len;
        typdata data;
    };
    struct node *next;

}node,*node_p;

typedef struct queue
{
    node_p  head;
    node_p tail;
}que,*que_p;

que_p create();
int empty_que(que_p Q);
node_p create_new(typdata data);
void  enqueue(que_p Q,typdata data);
void show_que(que_p  Q);
void dequeue(que_p Q);
int que_len(que_p Q);
void free_que(que_p Q);
#endif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stm32按键设置闹钟数进退位不正常?如何解决

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

A63 STM32_HAL库函数 之 Uart通用驱动 -- B -- 所有函数的介绍及使用

A63 STM32_HAL库函数 之 Uart通用驱动 -- B -- 所有函数的介绍及使用 1 该驱动函数预览1.15 HAL_UART_DMAResume1.16 HAL_UART_DMAStop1.17 HAL_UART_Abort1.18 HAL_UART_AbortTransmit1.19 HAL_UART_AbortReceive1.20 HAL_UART_Abort_IT1.21 HAL_UART_AbortTransmit_IT1.22 HA…

【Zoom安全解析】深入Zoom的端到端加密机制

标题&#xff1a;【Zoom安全解析】深入Zoom的端到端加密机制 在远程工作和在线会议变得越来越普及的今天&#xff0c;视频会议平台的安全性成为了用户关注的焦点。Zoom作为全球领先的视频会议软件&#xff0c;其端到端加密&#xff08;E2EE&#xff09;功能保证了通话的安全性…

李彦宏: 开源模型是智商税|马斯克: OpenAI 闭源不如叫 CloseAI

在 2024 年世界人工智能大会&#xff08;WAIC 2024&#xff09;上&#xff0c;百度创始人、董事长兼首席执行官李彦宏发表对开源模型的评价。 李彦宏认为&#xff1a;开源模型实际上是一种智商税&#xff0c;而闭源模型才是人工智能&#xff08;AI&#xff09;行业的未来。 马…

python库 - sentencepiece

SentencePiece 是一个开源的文本处理库&#xff0c;由 Google 开发&#xff0c;专门用于处理和生成无监督的文本符号化&#xff08;tokenization&#xff09;模型。它支持字节对编码&#xff08;BPE&#xff09;和 Unigram 语言模型两种主要的符号化算法&#xff0c;广泛应用于…

关于es中的kibana中的一些常用操作命令语句

1、查询某个索引的文档数据 get /index_name/_search2、根据某个索引下的具体某个字段的值来查询数据&#xff0c;这里比如说是&#xff1a;根据就modelId 1787774412315766785来查询数据 GET /index_name/_search {"query": {"term": {"modelId&q…

如何批量更改很多个文件夹里的文件名中包含文件夹名?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

【学术会议征稿】第五届大数据、人工智能与物联网工程国际会议

第五届大数据、人工智能与物联网工程国际会议 2024 5th International Conference on Big Data, Artificial Intelligence and Internet of Things 第五届大数据、人工智能与物联网工程国际会议&#xff08;ICBAIE 2024&#xff09;定于2024年10月25-27号在中国深圳隆重举行。…

SIFT代码,MATLAB

SIFT特征详解 - Brook_icv - 博客园 (cnblogs.com) 这一篇文章写的挺好的&#xff0c;个人觉得&#xff0c;大家感兴趣的话可以看一下&#xff0c;但是有一些地方个人觉得还是没有讲的很清楚。 代码下载路径&#xff1a; https://pan.baidu.com/s/1c_NULsDrF3nH6xTmC1cY2Q 提…

【系统架构设计师】计算机组成与体系结构 ⑪ ( 数据传输控制方式 | 程序直接控制方式 | 中断控制方式 | 直接内存访问方式 )

文章目录 一、数据传输控制方式1、IO 设备数据传输2、数据传输控制方式 二、程序直接控制方式 ( 重点考点 )1、无条件传送 和 程序查询方式2、程序查询方式3、程序直接控制方式 的 优缺点 三、程序中断方式1、程序中断方式 流程2、程序中断方式 优缺点 四、DMA 方式1、DMA 简介…

好用的声音分析的软件和网站

有许多软件和网站可以帮助进行声音分析&#xff0c;从专业级的音频处理软件到在线工具&#xff0c;以下是一些推荐&#xff1a; 专业音频分析软件 Audacity 开源且免费的音频编辑和分析工具。提供基本的音频录制、编辑和分析功能。支持多种插件&#xff0c;扩展其功能。 Adob…

项目实战--Spring Boot 3整合Flink实现大数据文件处理

一、应用背景 公司大数据项目中&#xff0c;需要构建和开发高效、可靠的数据处理子系统&#xff0c;实现大数据文件处理、整库迁移、延迟与乱序处理、数据清洗与过滤、实时数据聚合、增量同步&#xff08;CDC&#xff09;、状态管理与恢复、反压问题处理、数据分库分表、跨数据…

把 .py 文件编译成 .pyd 文件

将 .py 文件编译成 .pyd 文件&#xff08;在Windows上&#xff09;或 .so 文件&#xff08;在Linux或macOS上&#xff09;&#xff0c;实际上是将Python代码编译成一种可以被Python解释器直接加载的二进制模块。这种编译过程通常使用cython、pyinstaller的钩子&#xff08;hook…

JRT打印药敏报告

最近没写jrt系列博客&#xff0c;不是中途而废了。而是在写微生物系统。今天终于把微生物大体完成了&#xff0c;伴随着业务的实现&#xff0c;框架趋于完善和稳定。构建一套完美而强大的打印体系一直是我的理想&#xff0c;从最开始C#的winform打印控件到刚接触bs时候用js打印…

day11:文件处理

一、文件与文件模式介绍 1、什么是文件 文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口 用户/应用程序(open()) 操作系统&#xff08;文件&#xff09; 计算机硬件&#xff08;硬盘&#xff09;2、为何要用文件 ①用户/应用程序可以通过文件将数据永久保存…

【最强八股文 -- 计算机网络】【快速版】DNS 解析过程

步骤一&#xff1a;查询浏览器及计算机本地 HOST 文件中是否有对应的 缓存 步骤二&#xff1a;请求本地 DNS 服务器 (无则请求 根级 获取能提供信息的权威 DNS 服务器 ) 步骤三&#xff1a;逐级返回对应的 IP 至浏览器 步骤四&#xff1a;浏览器发起连接并缓存 参考资料&#x…

通过Arcgis从逐月平均气温数据中提取并计算年平均气温

通过Arcgis快速将逐月平均气温数据生成年平均气温数据。本次用2020年逐月平均气温数据操作说明。 一、准备工作 &#xff08;1&#xff09;准备Arcmap桌面软件&#xff1b; &#xff08;2&#xff09;准备2020年逐月平均气温数据&#xff08;NC格式&#xff09;、范围图层数据&…

JAVA分布式事务详情分布式事务的解决方案Java中的分布式事务实现

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

数一140+上岸|七月强化一定要避开这3个雷区!

当然可以&#xff0c;强化阶段的主要任务就是做题&#xff01; 但是不用一刀切&#xff0c;强化阶段听课和做题可以二八原则&#xff0c;就是听课占20%&#xff0c;做题占80%。 因为自己去自学讲义的话&#xff0c;比如张宇18讲&#xff0c;会漏掉一些重点&#xff0c;有的技…