当前位置: 首页 > news >正文

2024.7.22 作业

1.将双向链表和循环链表自己实现一遍,至少要实现创建、增、删、改、查、销毁工作

循环链表

looplinklist.h
#ifndef LOOPLINKLIST_H
#define LOOPLINKLIST_H#include <myhead.h>typedef int datatype;typedef struct Node
{union {int len;datatype data;};struct Node *next;
}Node,*NodePtr;//创建循环链表
NodePtr list_create();//链表判空
int list_empty(NodePtr L);//链表申请空间封装节点
NodePtr apply_node(datatype e);//按位置进行查找
NodePtr list_search_pos(NodePtr L,int pos);//链表尾插
int list_insert_tail(NodePtr L,datatype e);//链表遍历
int list_show(NodePtr L);//链表头删
int list_delete_head(NodePtr L);//链表销毁
void list_destroy(NodePtr L);//约瑟夫环
void ysfh(NodePtr L,int m);#endif
 looplinklist.c
#include "looplinklist.h"//创建循环链表
NodePtr list_create()
{NodePtr L=(NodePtr)malloc(sizeof(Node));if( NULL==L ){printf("创建失败\n");return NULL;}L->len = 0;L->next = L;printf("创建成功\n");return L;
}//链表判空
int list_empty(NodePtr L)
{return L->next==L;
}//链表申请空间封装节点
NodePtr apply_node(datatype e)
{NodePtr p = (NodePtr)malloc(sizeof(Node));if( NULL==p ){printf("申请失败\n");return NULL;}p->data = e;p->next = NULL;return p;
}//按位置进行查找
NodePtr list_search_pos(NodePtr L,int pos)
{if( NULL==L || pos<0 || pos>L->len){printf("查找失败\n");return NULL;}NodePtr q = L;for(int i=1;i<=pos;i++){q=q->next;}return q;
}//链表尾插
int list_insert_tail(NodePtr L,datatype e)
{if( NULL==L ){printf("尾插失败\n");return -1;}NodePtr p = apply_node(e);if( NULL==p ){return -1;}NodePtr q = list_search_pos(L,L->len);p->next = q->next;q->next = p;L->len++;return 0;
}//链表遍历
int list_show(NodePtr L)
{if( NULL==L || list_empty(L) ){printf("遍历失败\n");return -1;}NodePtr q = L->next;while( q!=L ){printf("%d\t",q->data);q = q->next;}printf("\n");return 0;
}//链表头删
int list_delete_head(NodePtr L)
{if( NULL==L || list_empty(L) ){printf("头删失败\n");return -1;}NodePtr q = L->next;L->next = q->next;L->len--;free(q);q=NULL;return 0;
}//链表销毁
void list_destroy(NodePtr L)
{if( NULL==L ){printf("销毁失败\n");return ;}while( !list_empty(L) ){list_delete_head(L);}free(L);L=NULL;printf("销毁成功\n");return;
}

双向链表 

doublelinklist.h
#ifndef DOUBLELINKLIST_H
#define DOUBLELINKLIST_Htypedef char datatype;typedef struct Node
{union{int len;datatype data;}struct Node *prio;struct Node *next;
}Node,*NodePtr;//创建双向链表
NodePtr list_create();//链表判空
int list_empty(NodePtr L);//申请节点封装数据
NodePtr apply_node(datatype e);//链表头插
int list_insert_head(NodePtr L,datatype e);//链表遍历
int list_show(NodePtr L);//按位置查找返回节点
NodePtr list_search_pos(NodePtr L,int pos);//链表任意位置删除
int list_delete_pos(NodePtr L,int pos);//链表空间释放
void list_destroy(NodePtr L);#endif
doublelinklist.c
#include "doublelinklist.h"//创建双向链表
NodePtr list_create()
{NodePtr L = (NodePtr)malloc(sizeof(Node));if( NULL==L ){printf("创建失败\n");return NULL;}L->len = 0;L->prio = NULL;L->next = NULL;printf("创建成功\n");return L;
}//链表判空
int list_empty(NodePtr L)
{return L->next == NULL;
}//申请节点封装数据
NodePtr apply_node(datatype e)
{NodePtr p =(NodePtr)malloc(sizeof(Node));if( NULL==p ){printf("节点申请失败\n");return NULL;}p->data = e;p->prio = NULL;p->next =NULL;return
}//链表头插
int list_insert_head(NodePtr L,datatype e)
{if( NULL==L ){printf("头插失败\n");return -1;}NodePtr p = apply_node(e);if( NULL==p ){return -1;}if( list_empty(L) ){p->prio = L;L-next = p;}else{p->prio = L;p->next = L->next;L->next->prio = p;L-next = p;}L->len++;return 0;
}//链表遍历
int list_show(NodePtr L)
{if( NULL==L || list_empty(L) ){printf("遍历失败\n");return -1;}printf("当前数据为:");NodePtr q = L->next;while( q ){printf("%c\t",q->data);q=q->next;}printf("\n");return 0;
}//按位置查找返回节点
NodePtr list_search_pos(NodePtr L,int pos)
{if( NULL==L || list_empty(L) || pos<0 || pos>L->len ){printf("查找失败\n");return NULL;}NodePtr q = L;for(int i=1;i<=pos;i++){q = q->next;}return q;
}//链表任意位置删除
int list_delete_pos(NodePtr L,int pos)
{if( NULL==L || list_empty(L) || pos<1 || pos>L->len ){printf("删除失败\n");return -1;}NodePtr q = list_search_pos(L,pos);if( q->next==NULL ){q->prio->next==NULL;}else{q->prio->next = q->next;q->next->prio = q->prio;}free(q);q=NULL;L->len--;return 0;
}//链表空间释放
void list_destroy(NodePtr L)
{if( NULL==L ){printf("释放失败\n");return ;}while( !list_empty(L) ){list_delete_pos(L,1);}free(L);L=NULL;printf("链表释放成功\n");return ;
}

 

2.使用循环链表完成约瑟夫环问题

//约瑟夫环
void ysfh(NodePtr L,int m)
{NodePtr p = L->next;NodePtr q = L;while( p->next!=p ){for(int i=1;i<m;i++){q = p;p = p->next;if(p==L){q=q->next;p=p->next;}}printf("%d\t",p->data);NodePtr a = p;           //标记q->next = p->next;   //p->next 孤立p=p->next;free(a);                   //释放a = NULL;}printf("\n最后剩下的节点: %d\n", p->data);  free(p); // 释放最后一节点  }

3.使用栈,完成进制转换

输入:一个整数,进制数

输出:该数的对应的进制数

void DC(StackPtr S,int m,int n)
{while(m/n!=0){S->top++;S->data[S->top]=m%n;m=m/n;}S->top++;S->data[S->top]=1;while(S->top!=-1){printf("%d",S->data[S->top]);S->top--;}printf("\n");
}

思维导图

相关文章:

2024.7.22 作业

1.将双向链表和循环链表自己实现一遍&#xff0c;至少要实现创建、增、删、改、查、销毁工作 循环链表 looplinklist.h #ifndef LOOPLINKLIST_H #define LOOPLINKLIST_H#include <myhead.h>typedef int datatype;typedef struct Node {union {int len;datatype data;}…...

如何使用aiohttp或requests-async等库并发地执行多个HTTP请求

在Python中&#xff0c;要并发地执行多个HTTP请求&#xff0c;可以使用aiohttp这样的异步HTTP客户端库&#xff0c;因为它支持异步编程&#xff0c;能够显著提高IO密集型任务的性能&#xff0c;比如网络请求。requests-async并不是一个广泛认知的库&#xff08;虽然可能存在类似…...

Golang | Leetcode Golang题解之第257题二叉树的所有路径

题目&#xff1a; 题解&#xff1a; func binaryTreePaths(root *TreeNode) []string {paths : []string{}if root nil {return paths}nodeQueue : []*TreeNode{}pathQueue : []string{}nodeQueue append(nodeQueue, root)pathQueue append(pathQueue, strconv.Itoa(root.V…...

关于css中flex布局垂直居中失效问题的原因

项目中遇到用flex进行页面布局后&#xff0c;使用上下居中设置&#xff1a;align-item: center; 目标效果如下&#xff1a; 但是失效&#xff0c;不起作用&#xff0c;如下图所示&#xff1a; 各种排查过后发现设置了子模块 align-self 属性&#xff0c;这会覆盖容器上的 al…...

用Redisson写一个库存扣减的方法

使用Redisson来处理库存操作可以确保在高并发环境下库存数据的一致性和完整性。以下是使用Redisson实现库存管理的一些通用方法&#xff0c;包括获取库存、扣减库存、设置库存等。我们将使用Redisson的ReentrantLock来确保并发安全。 首先&#xff0c;确保你已经正确设置了Red…...

第2节课:文本内容与格式化——HTML中的文本处理技巧

目录 文本内容与格式化&#xff1a;段落和标题&#xff1a;构建文本基础段落 <p>标题 <h1> 到 <h6> 格式化&#xff1a;强调和样式加粗 <b>斜体 <i>下划线 <u> 列表&#xff1a;组织内容无序列表 <ul>有序列表 <ol>定义列表 &…...

temu平台电池/锂电池UN38.3资质合规解析

UN38.3资质合规解析 为满足相关法律法规和商品运输安全需求含锂电池商品需要提供对应的UN38.3资质。截至7月29日&#xff0c;相关类目下UN38.3资质待上传或上传失败的商品可能面临下架。 -01什么是UN38.3- 1&#xff09;UN38.3是指由联合国危险货物运输专家委员会编写的《试验…...

Huawei、Cisco 路由中 RIP 协议 summary 的用法

华为路由中 RIP summary summary用来使能 RIP 有类聚合&#xff0c;聚合后的路由以使用自然掩码的路由形式发布。undo summary用来取消有类聚合以便在子网之间进行路由&#xff0c;此时&#xff0c;子网的路由信息就会被发布出去。路由聚合降低了路由表中路由信息量。说明 有类…...

智能图像信息提取(飞桨OCR+ERNIE-Layout)

嘿&#xff0c;技术大佬们&#xff0c;今天我要分享的是一个超级棒的OCR技术方案&#xff0c;它结合了飞桨OCR和ERNIE-Layout&#xff0c;绝对是图像信息提取的利器&#xff01; 线上体验地址&#xff1a;智能图像信息提取(飞桨OCRERNIE-Layout) 它基于ERNIE -Layout和多版本Pa…...

Ubuntu 24.04 LTS Noble安装 FileZilla Server

FileZilla Server 是一款使用图形用户界面快速创建 FTP 服务器的软件。它有助于测试需要 FTP 服务器功能的各种项目。虽然早期的 FileZilla FTP 服务器仅适用于 Windows 和 macOS&#xff0c;但现在我们也可以在 Linux&#xff08;例如 Ubuntu 24.04&#xff09;上安装 FileZil…...

【关于使用swoole的知识点整理】

目录 &#xff08;1&#xff09;Swoole 如何理解&#xff0c;能解决你项目中的哪些痛点&#xff1f; &#xff08;2&#xff09;Swoole里的协程是什么&#xff0c;怎么用&#xff1f;为什么协程可以提高并发&#xff1f; &#xff08;3&#xff09;简述Swoole有哪些优点&…...

迁移学习:目标检测的加速器

迁移学习&#xff1a;目标检测的加速器 在深度学习领域&#xff0c;目标检测是一项至关重要的任务&#xff0c;广泛应用于从视频监控到自动驾驶等众多领域。然而&#xff0c;训练一个高性能的目标检测模型不仅需要大量的标注数据&#xff0c;还需要大量的计算资源和时间。迁移…...

gitee的怎么上传项目

前提 1.先下载Git Bash (如果没有下载的宝子们下载连接如下: 链接: link ) 项目上传到Gitee步骤 1.在Gitee上建立远程仓库 2.填写相关信息 3.进入本地你想要上传的文件目录下&#xff0c;右键单击空白处&#xff0c;点击Git Bash Here 4.配置你的用户名和邮箱 git con…...

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(二十三)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 33 节&#xff09; P33《32.通知-进度条通知》 下载按钮对应的逻辑&#xff1a; 取消按钮对应的逻辑&#xff1a; 暂停按钮对应的…...

.NET C# 配置 Options

.NET C# 配置 Options 使用 options 模式可以带来许多好处&#xff0c;包括清晰的配置管理、类型安全、易于测试和灵活性。但在使用过程中&#xff0c;也需要注意配置复杂性、性能开销和依赖框架等问题。通过合理设计和使用&#xff0c;可以充分发挥 options 模式的优势&#…...

42、PHP 实现把二叉树打印成多行

题目&#xff1a; PHP 实现把二叉树打印成多行 描述&#xff1a; 从上到下按层打印二叉树&#xff0c;同一层结点从左至右输出。每一层输出一行。 <?php/*class TreeNode{var $val;var $left NULL;var $right NULL;function __construct($val){$this->val $val;} }…...

verilog bug记录——正点原子spi_drive存在的问题

verilog bug记录——正点原子spi_drive存在的问题 问题概述代码修改—spi_drive.v遗留问题 问题概述 因为项目需求&#xff0c;需要利用spi对flash进行擦除和写入操作&#xff0c;所使用的开发板是正电原子的达芬奇开发板&#xff0c;我事先往Flash里面存了两个bit&#xff0c…...

vue+watermark-dom实现页面水印效果

前言 页面水印大家应该都不陌生&#xff0c;它可以用于验证数字媒体的来源和完整性&#xff0c;还可以用于版权保护和信息识别&#xff0c;这些信息可以在不影响媒体质量的情况下嵌入&#xff0c;‌并在需要时进行提取。‌本文将通过 vue 结合 watermark-dom 库&#xff0c;教大…...

为什么要学习网安技术?

学习网络安全&#xff08;网安&#xff09;技术在当今社会变得尤为重要&#xff0c;这主要源于以下几个方面的原因&#xff1a; 保护个人隐私&#xff1a;随着互联网的普及&#xff0c;个人信息如姓名、地址、电话号码、甚至银行账户信息等都在网络上留下了痕迹。学习网安技术可…...

2024春秋杯网络安全联赛夏季赛Crypto(AK)解题思路及用到的软件

2024春秋杯网络安全联赛夏季赛Crypto(AK) 2024春秋杯网络安全联赛夏季赛Crypto解题思路以及用到的软件 所有题用到的软件 1.vm(虚拟机kali)和Ubuntu&#xff0c;正常配置即可B站有很多。 2.Visual Studio Code(里面要配置python&#xff0c;crypto库和Sagemath数学软件系统S…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...