数据结构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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小程序复制功能不可用 setClipboardData:fail no permission

先上图 用户协议剪切板也更新但是依旧报错了 最后在公众平台通知里发现是用户之前小程序有规格被封禁了该功能

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

目录&#xff1a; 目录&#xff1a; 一、什么是openssl&#xff1f; 二、所需要具备的开发工具 三、Windows上编译OpenSSL3.0 四、Linux编译openssl3.0 一、什么是openssl&#xff1f; OpenSSL 是一个开源的软件库&#xff0c;它提供了一系列加密工具和协议&#xff0c;主要用…

apple watch程序出错 Cannot launch apps while in nightstand mode

开发的时候运行apple watch程序出错&#xff1a; ailure Reason: The request was denied by service delegate (IOSSHLMainWorkspace) for reason: Busy ("Cannot launch apps while in nightstand mode"). 这是因为&#xff1a; 将Apple Watch放在充电器上并直立…

Python 处理文件的读写操作

Python 提供了丰富的文件读写操作&#xff0c;可以轻松处理文本文件和二进制文件。以下是关于 Python 文件读写操作的详细讲解&#xff0c;包括打开文件、读取文件、写入文件、文件指针操作、文件关闭和异常处理等方面。 一、文件的打开和关闭 在对文件进行读写操作之前&…

喜讯|华院计算法律大模型入围《2024大模型典型示范应用案例集》

2024年世界人工智能大会&#xff08;WAIC&#xff09;举办期间&#xff0c;中国信通院正式发布了《2024大模型典型示范应用案例集》&#xff08;以下简称《案例集》&#xff09;。该案例集由中国信通院华东分院、上海人工智能实验室主导&#xff0c;以产业化为导向&#xff0c;…

探索IP形象设计:快速掌握设计要点

随着市场竞争的加剧&#xff0c;越来越多的企业开始关注品牌形象的塑造和推广。在品牌形象中&#xff0c;知识产权形象设计是非常重要的方面。在智能和互联网的趋势下&#xff0c;未来的知识产权形象设计可能会更加关注数字和社交网络。通过数字技术和社交媒体平台&#xff0c;…

Java 中的泛型(超全详解)

一、泛型概述 1. 什么是泛型&#xff1f;为什么要使用泛型&#xff1f; 泛型&#xff0c;即“参数化类型”。一提到参数&#xff0c;最熟悉的就是定义方法时有形参列表&#xff0c;普通方法的形参列表中&#xff0c;每个形参的数据类型是确定的&#xff0c;而变量是一个参数。在…

VS2022 git拉取/推送代码错误

第一步&#xff1a;打开VS2022 第二步&#xff1a;工具->选项->源代码管理->Git 全局设置 第三步&#xff1a;加密网络提供程序设置为&#xff1a;OpenSSL 完结&#xff1a;

函数式接口、匿名内部类、lambda表达式

一、函数式接口 只有一个抽象方法的接口叫函数式接口&#xff0c;不能有两个&#xff0c;也不能有方法实现。 FunctionalInterface注解标记&#xff0c;在idea中可以用这个注解验证是不是函数式接口。实现函数式接口可以转成lambda表达式。 二、匿名内部类 匿名内部类的格式&a…

Java面试八股之Redis单线程为什么性能高

Redis单线程为什么性能高 1.内存数据库特性 要点&#xff1a;Redis是一个内存数据库&#xff0c;其数据主要存储在内存中&#xff0c;而非磁盘。内存访问的速度远超磁盘&#xff0c;通常可达纳秒级别&#xff0c;这使得Redis在处理数据时几乎不受I/O瓶颈的影响。由于数据操作…

Python31 自然语言处理NLP之NLTK的使用

1.关于自然语言处理NLP 自然语言处理NLP是人工智能和计算机科学的一个子领域&#xff0c;专注于计算机与人类&#xff08;自然&#xff09;语言之间的互动。其目的是使计算机能够理解、解释和生成人类语言。NLP 涉及语言学、计算机科学和人工智能的多学科交叉&#xff0c;通过…

SAP与税控系统集成案例

一、项目背景 重庆润通控股有限公司成立于2007年&#xff0c;是一家集合汽柴油动力及终端、摩托车、储能电源、汽车零部件、金融服务等产业的多元化集团公司。 大量订单数据导致订单业务会很复杂&#xff0c;为提供订单完成质量&#xff0c;引入税控系统服务商进行订单开票…

实战精选 | 如何在一台 Linux AI PC 上高效运行 OpenVINO™

点击蓝字 关注我们 作者&#xff1a;Adrian Boguszewski&#xff0c;英特尔 AI 软件布道师 武卓博士&#xff0c;英特尔 AI 软件布道师 什么是 AI PC&#xff0c;为什么它有一个特殊的名字&#xff1f; AI PC 是时下 PC 领域的一个热门话题。与普通 PC 不同&#xff0c;AI PC 配…

linux 0.11 中的重要的全局变量

通过对全局变量的了解&#xff0c;也有助于了解整个代码的逻辑。就跟学习类一样&#xff0c;了解类有哪些成员变量&#xff0c;也有助于了解类的成员函数的功能。 &#xff08;1&#xff09;内存初始化相关 static u_char mem_map [ PAGING_PAGES ] { 0 , } .本数组对 1M 以外…

JavaSE 面向对象程序设计进阶 IO 练习读取多个对象

练习读取多个对象 用序列化流将对象写入文件 import java.io.*; import java.nio.charset.Charset;public class Main {public static void main(String[] args) throws IOException, ClassNotFoundException {//序列化多个对象Person p1new Person("多多", 男,20)…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-57长短期记忆网络(LSTM)

57长短期记忆网络&#xff08;LSTM&#xff09; 1.LSTM原理 LSTM是专为解决标准RNN的长时依赖问题而设计的。标准RNN在训练过程中&#xff0c;随着时间步的增加&#xff0c;梯度可能会消失或爆炸&#xff0c;导致模型难以学习和记忆长时间间隔的信息。LSTM通过引入一组称为门…

55070-001J 同轴连接器

型号简介 55070-001J是Southwest Microwave的连接器。这款连接器外壳和中心接触件采用 BeCu 合金制成&#xff0c;这是一种具有良好导电性和机械性能的铜合金。绝缘珠则使用了 PEEK HT 材料制成&#xff0c;这是一种耐高温、耐化学腐蚀的工程塑料。为了确保连接的可靠性和稳定性…

旷野之间11 - 开源 SORA 已问世!训练您自己的 SORA 模型!

​​​​​ 目前最接近 SORA 的开源模型是 Latte,它采用了与 SORA 相同的 Vision Transformer 架构。Vision Transformer 究竟有何独特之处?它与之前的方法有何不同? Latte 尚未开源其文本转视频训练代码。我们复制了论文中的文本转视频训练代码,并将其提供给任何人使用,…

袋鼠云产品支持全栈信创适配,更加安全可靠、自主可控

随着国产替换的深化&#xff0c;企业对信创产品的需求逐渐融合更丰富的业务诉求以及未来数智规划&#xff0c;正从“同类替换”转向“迭代升级”。 当前&#xff0c;袋鼠云的产品与芯片、服务器、数据库、操作系统、中间件、云平台等主流信创厂商全面兼容适配&#xff0c;为企…

3.相机标定原理及代码实现(opencv)

1.相机标定原理 相机参数的确定过程就叫做相机标定。 1.1 四大坐标系及关系 &#xff08;1&#xff09;像素坐标系&#xff08;单位&#xff1a;像素&#xff08;pixel&#xff09;&#xff09; 像素坐标系是指相机拍到的图片的坐标系&#xff0c;以图片的左上角为坐标原点&a…