day5,数据结构,单向,双向,循环链表

1】思维导图

2】完成单向循环链表的所有操作 【创建、判空、尾插、遍历、尾删、销毁】

创建:

LooplinkPtr caerte()
{LooplinkPtr h=(LooplinkPtr)malloc(sizeof(Looplink));if(NULL==h){printf("创建失败\n");return NULL;}h->len=0;h->data=0;h->next=h;printf("创建成功\n");return h;
}

判空:

int empt(LooplinkPtr h)
{if(NULL==h){printf("判空失败\n");return -1;}return h->next==h;
}

尾插:

void Tail_Add(LooplinkPtr h,DataType a)
{if(NULL==h){printf("尾插失败\n");return ;}LooplinkPtr p=node_caerte(a);LooplinkPtr p1=h;while(p1->next!=h){p1=p1->next;}p1->next=p;p->next=h;h->len++;return;
}

 遍历:

void show(LooplinkPtr h)
{if(NULL==h||empt(h)){printf("打印失败\n");return ;}LooplinkPtr p=h;while(p->next!=h){p=p->next;printf("%d->",p->data);}putchar(10);return ;
}

 尾删:

void Tail_Del(LooplinkPtr h)
{if(NULL==h||empt(h)){printf("尾删失败\n");return ;}LooplinkPtr p=h;for(int i=0;i<h->len-1;i++){p=p->next;}LooplinkPtr temp=p->next;p->next=h;h->len--;free(temp);temp=NULL;return ;
}

销毁:

void My_free(LooplinkPtr h)
{if(NULL==h||empt(h)){printf("销毁失败\n");return ;}for(int i=0;i<h->len;i++){Tail_Del(h);}free(h);printf("销毁成功\n");return ;
}

运行截图:

 

源码:

#include"Looplink.h"LooplinkPtr caerte()
{LooplinkPtr h=(LooplinkPtr)malloc(sizeof(Looplink));if(NULL==h){printf("创建失败\n");return NULL;}h->len=0;h->data=0;h->next=h;printf("创建成功\n");return h;
}int empt(LooplinkPtr h)
{if(NULL==h){printf("判空失败\n");return -1;}return h->next==h;
}LooplinkPtr node_caerte(DataType a)
{LooplinkPtr p=(LooplinkPtr)malloc(sizeof(Looplink));if(NULL==p){printf("创建失败\n");return NULL;}p->data=a;return p;
}void Tail_Add(LooplinkPtr h,DataType a)
{if(NULL==h){printf("尾插失败\n");return ;}LooplinkPtr p=node_caerte(a);LooplinkPtr p1=h;while(p1->next!=h){p1=p1->next;}p1->next=p;p->next=h;h->len++;return;
}void show(LooplinkPtr h)
{if(NULL==h||empt(h)){printf("打印失败\n");return ;}LooplinkPtr p=h;while(p->next!=h){p=p->next;printf("%d->",p->data);}putchar(10);return ;
}void Tail_Del(LooplinkPtr h)
{if(NULL==h||empt(h)){printf("尾删失败\n");return ;}LooplinkPtr p=h;for(int i=0;i<h->len-1;i++){p=p->next;}LooplinkPtr temp=p->next;p->next=h;h->len--;free(temp);temp=NULL;return ;
}void My_free(LooplinkPtr h)
{if(NULL==h||empt(h)){printf("销毁失败\n");return ;}for(int i=0;i<h->len;i++){Tail_Del(h);}free(h);printf("销毁成功\n");return ;
}

3】完成双向循环链表的所有操作 【创建、判空、尾插、遍历、尾删、销毁】(与单向循环链表相似)

创建:

Loop_double_linkPtr caerte()
{Loop_double_linkPtr h=(Loop_double_linkPtr)malloc(sizeof(Loop_double_link));if(NULL==h){printf("创建失败\n");return NULL;}h->len=0;h->data=0;h->next=h;h->proir=h;printf("创建成功\n");return h;
}

判空:

int empt(Loop_double_linkPtr h)
{if(NULL==h){printf("判空失败\n");return -1;}return h->next==h;
}

 尾插:

void Tail_Add(Loop_double_linkPtr h,DataType a)
{if(NULL==h){printf("尾插失败\n");return ;}Loop_double_linkPtr p=node_caerte(a);Loop_double_linkPtr p1=h;while(p1->next!=h){p1=p1->next;}p->next=h;p->proir=p1;h->proir=p;p1->next=p;h->len++;return;
}

遍历:

void show(Loop_double_linkPtr h)
{if(NULL==h||empt(h)){printf("打印失败\n");return ;}Loop_double_linkPtr p=h;while(p->next!=h){p=p->next;printf("%d->",p->data);}putchar(10);return ;
}

 尾删:

void Tail_Del(Loop_double_linkPtr h)
{if(NULL==h||empt(h)){printf("尾删失败\n");return ;}Loop_double_linkPtr p=h;for(int i=0;i<h->len-1;i++){p=p->next;}Loop_double_linkPtr temp=p->next;p->next=h;h->proir=p;h->len--;free(temp);temp=NULL;return ;
}

销毁:

void My_free(Loop_double_linkPtr h)
{if(NULL==h||empt(h)){printf("销毁失败\n");return ;}for(int i=0;i<h->len;i++){Tail_Del(h);}free(h);printf("销毁成功\n");return ;
}

运行截图:

附源码:

#include"Loopdoublelink.h"Loop_double_linkPtr caerte()
{Loop_double_linkPtr h=(Loop_double_linkPtr)malloc(sizeof(Loop_double_link));if(NULL==h){printf("创建失败\n");return NULL;}h->len=0;h->data=0;h->next=h;h->proir=h;printf("创建成功\n");return h;
}int empt(Loop_double_linkPtr h)
{if(NULL==h){printf("判空失败\n");return -1;}return h->next==h;
}Loop_double_linkPtr node_caerte(DataType a)
{Loop_double_linkPtr p=(Loop_double_linkPtr)malloc(sizeof(Loop_double_link));if(NULL==p){printf("创建失败\n");return NULL;}p->data=a;p->next=NULL;p->proir=NULL;return p;
}void Tail_Add(Loop_double_linkPtr h,DataType a)
{if(NULL==h){printf("尾插失败\n");return ;}Loop_double_linkPtr p=node_caerte(a);Loop_double_linkPtr p1=h;while(p1->next!=h){p1=p1->next;}p->next=h;p->proir=p1;h->proir=p;p1->next=p;h->len++;return;
}void show(Loop_double_linkPtr h)
{if(NULL==h||empt(h)){printf("打印失败\n");return ;}Loop_double_linkPtr p=h;while(p->next!=h){p=p->next;printf("%d->",p->data);}putchar(10);return ;
}void Tail_Del(Loop_double_linkPtr h)
{if(NULL==h||empt(h)){printf("尾删失败\n");return ;}Loop_double_linkPtr p=h;for(int i=0;i<h->len-1;i++){p=p->next;}Loop_double_linkPtr temp=p->next;p->next=h;h->proir=p;h->len--;free(temp);temp=NULL;return ;
}void My_free(Loop_double_linkPtr h)
{if(NULL==h||empt(h)){printf("销毁失败\n");return ;}for(int i=0;i<h->len;i++){Tail_Del(h);}free(h);printf("销毁成功\n");return ;
}

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

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

相关文章

CH340系列芯片驱动电路·CH340系列芯片驱动!!!

目录 CH340基础知识 CH340常见类型 CH340引脚功能讲解 CH340驱动电路 CH340系列芯片数据手册 编写不易&#xff0c;仅供学习&#xff0c;请勿搬运&#xff0c;感谢理解 常见元器件驱动电路文章专栏连接 LM7805系列降压芯片驱动电路降压芯片驱动电路详解-CSDN博客 ME62…

【机器学习案列】使用随机森林(RF)进行白葡萄酒质量预测

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

PostgreSql-学习06-libpq之同步命令处理

目录 一、环境 二、介绍 三、函数 1、PQsetdbLogin &#xff08;1&#xff09;作用 &#xff08;2&#xff09;声明 &#xff08;3&#xff09;参数介绍 &#xff08;4&#xff09;检测成功与否 2、PQfinish &#xff08;1&#xff09;作用 &#xff08;2&#xff0…

Reactor

文章目录 正确的理解发送double free问题 1.把我们的reactor进行拆分2.链接管理3.Reactor的理论 listensock只需要设置_recv_cb&#xff0c;而其他sock&#xff0c;读&#xff0c;写&#xff0c;异常 所以今天写nullptr其实就不太对&#xff0c;添加为空就没办法去响应事件 获…

Mac iOS、Android、Flutter、React Native开发环境配置

1.安装XCode https://apps.apple.com/cn/app/xcode/id497799835?mt12 2.安装Android Studio https://developer.android.google.cn/studio 3.安装brew 参考地址&#xff1a;https://www.jianshu.com/p/22122a1d4474 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunk…

[创业之路-200]:什么是business(业务)?B2B, B2C, B2G业务, 什么是业务设计?

目录 一、基本概念 1、基础定义 2、构成要素 3、业务流程 4、业务范围 5、语境中的含义 六、常见的业务类型 1、按行业分类 2、按运营模式分类 3、按业务性质分类 4、其他分类方式 三、B2B, B2C, B2G业务 1、B2B&#xff08;Business-to-Business&#xff09; 2、…

React,Antd实现文本输入框话题添加及删除的完整功能解决方案

最终效果就是实现该输入框&#xff1a; 添加话题时&#xff0c;话题自动插入到输入框前面多文本输入框左侧间距为话题的宽度多行文本时&#xff0c;第二行紧接开头渲染删除文本时&#xff0c;如果删除到话题&#xff0c;再次删除&#xff0c;话题被删除 首先构造div结构 cons…

【机器人】ATM 用于策略学习的任意点轨迹建模 RSS 2024 | 论文精读

文章提出了一种新的框架&#xff0c;名为Any-point Trajectory Modeling (ATM) &#xff0c;称为任意点轨迹建模。 用于从视频中预测任意点的未来轨迹&#xff0c;从而在最少动作标签数据的情况下&#xff0c;学习稳健的视觉运动策略。 图中展示了三个案例&#xff0c;打开柜子…

Android 搭建AIDL Client和Server端,双向通信

一、背景 使用AIDL,搭建Client和Server端,实现跨进程通讯,即两个应用之间可以相互通讯。这里列举AIDL实现的方式和需注意的细节&#xff0c;并附上源码。 二、实现方式 2.1 定义AIDL需要的接口,名字为xxx.aidl,Client和Server端 AIDL接口的包名和aidl文件必须一致&#xff0c…

【VUE】14、VUE项目如何自动识别服务端是否发布了新版本

今天介绍的是通过轮询的方式去检测服务端是否发布了新版本&#xff0c;从而提醒客户刷新页面&#xff0c;提升用户体验。 1、实现思路 使用轮询的方式获取项目中 index.html 文件。查询文件引入的 JS 文件是否有更新&#xff08; Vue 每次打包后会生成新的引入文件&#xff0…

空天地遥感数据识别与计算--数据分析如何助力农林牧渔、城市发展、地质灾害监测等行业革新

在科技飞速发展的时代&#xff0c;遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究&#xff0c;空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而&#xff0c;对于许多专业人士而言&#xff0c;如何高效地处…

多智能体/多机器人网络中的图论法

一、引言 1、网络科学至今受到广泛关注的原因&#xff1a; &#xff08;1&#xff09;大量的学科&#xff08;尤其生物及材料科学&#xff09;需要对元素间相互作用在多层级系统中所扮演的角色有更深层次的理解&#xff1b; &#xff08;2&#xff09;科技的发展促进了综合网…

python数据分析:介绍pandas库的数据类型Series和DataFrame

安装pandas pip install pandas -i https://mirrors.aliyun.com/pypi/simple/ 使用pandas 直接导入即可 import pandas as pd pandas的数据结构 pandas提供了两种主要的数据结构&#xff1a;Series 和 DataFrame,类似于python提供list列表&#xff0c;dict字典&#xff0c;…

GMSSL的不同python版本

链接1&#xff08;推荐&#xff09; 这个使用的库&#xff0c;是gm ssl 3.1.1。为什么推荐&#xff1f;因为这个有C源码。 GitHub - GmSSL/GmSSL-Python: Python binding to the GmSSL library 链接2 这个使用的库&#xff0c;是gmssl 3.2.2。搜索3.2.2&#xff0c;找不到相…

Python:枚举(包含例题字符计数,反倍数,洁净数,扫雷)

一.枚举是什么 枚举&#xff1a;通过逐个尝试所有可能的值或组合来解决问题的方法。 将问题空间划分为一系列离散的状态&#xff0c;并通过遍历这些状态来寻找解决方案。 二.枚举流程 1.确定解空间&#xff08;一维&#xff0c;二维等&#xff09; 2.确定空间边界&#xff…

计算机网络 八股青春版

什么是HTTP&#xff1f;HTTP和HTTPS的区别 HTTP HTTP是超文本运输协议&#xff0c;是一种无状态&#xff08;每次请求都是独立的&#xff09;的应用层协议。用于在客户端和服务器之间传输超文本数据&#xff08;如HTML文件&#xff09;。默认端口是80数据以明文形式传输&#…

域名和服务器是什么?域名和服务器是什么关系?

在互联网的生态系统中&#xff0c;域名和服务器是两个至关重要的组成部分。它们共同构成了我们访问网站和使用在线服务的基础。那么域名和服务器是什么?域名和服务器是什么关系? 1、域名的概念 域名是互联网中用于标识特定地址的一种文字形式。它是用户访问网站时输入的易记…

设计模式之 abstract factory

适用场景 一个系统要独立于它的产品的创建、组合和表示时。一个系统要由多个产品系列中的一个来配置时。当你要强调一系列相关的产品对象的设计以便进行联合使用时。当你提供一个产品类库&#xff0c;而只想显示它们的接口而不是实现时 架构演示 首先client这个东西可以接触到…

linux-----数据库

Linux下数据库概述 数据库类型&#xff1a; 关系型数据库&#xff08;RDBMS&#xff09;&#xff1a;如MySQL、PostgreSQL、Oracle等。这些数据库以表格的形式存储数据&#xff0c;表格之间通过关系&#xff08;如主键 - 外键关系&#xff09;相互关联。关系型数据库支持复杂的…

鸿蒙学习笔记:用户登录界面

文章目录 1. 提出任务2. 完成任务2.1 创建鸿蒙项目2.2 准备图片资源2.3 编写首页代码2.4 启动应用 3. 实战小结 1. 提出任务 本次任务聚焦于运用 ArkUI 打造用户登录界面。需呈现特定元素&#xff1a;一张图片增添视觉感&#xff0c;两个分别用于账号与密码的文本输入框&#…