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

24.8.3数据结构|双向循环链表、静态链表

双向循环链表

节点类型与双链表的节点类型完全相同双向循环链表的操作也与双链表的操作基本一致。

例题

将自然数一到N按由小到大的顺序沿顺时针方向围成一个圈,然后以一为起点先沿顺时针方向数到第N个数将其划去,再沿逆时针方向数到第K个数将其滑去,重复上述操作直到剩下一个数为止,问最后剩下的是哪个数。(用带头节点双向循环链表实现。)

静态链表

图示:

适用情况:

无法实现上述的链式存储但可以借用一维数组来实现的情况可以使用。

优点:

线性表的插入和删除操作时不需要移动元素,仅需要修改指针游标就行。具有链式存储的主要优点

主要函数:

1、定义结构
代码
#include<stdio.h>
typedef int Element;
#define Maxsize 100
//定义结构 
typedef struct {Element date;int cur;
}StaLink[Maxsize]; 
注意:

date数据,cur游标(看作指针也可以),StaLink[i](i即为下标)

2、初始化:(申请空间)

建立一个空的静态链表space(将一维数组space中各分量炼成一个备用链表零表示空指针根据当前地图)

理解:
代码:
//初始化 
void creatLink(StaLink space){int i=0;for(i=0;i<Maxsize-1;i++){space[i].cur=i+1;space[Maxsize-1].cur=0;}
} 
3、获取结点函数:

从备用链表上获取一个新的结点,如果备用连表已经空了,获取节点的操作失败

理解:

感觉就是把头结点的next的结点的下标返回【不太理解】

通过看第5个建立静态表可以知道:

4、回收结点函数:(释放)

将从链表中删除的结点插入到备用链表中的头结点之后

5、建立静态表

建立一个含有n个节点的静态链表head

//建立静态链表
int createlink(StaLink space,int n){int k,head,s;//把头head申请出来 k=head=allocnode(StaLink space);for(int i=0;i<=n;i++){//循环把结点一个一个申请出来s=allocnode(StaLink space);scanf("%d",&space[s].date);space[k].cur=sk=s;//因为新的s就是下一个循环的头 }space[k].cur=0;return head;//返回即为头结点的下标 
} 
6、求表长

计算静态链表head中数据元素的个数

//求表长
int getlen(StaLink space,int head) {int i=0,s;s=space[head].cur;while(s!=0){s=space[s].cur;i++;}return i;
}
7、取元素:

取出静态链表head中的第i个结点的元素值

//取元素:取出静态链表head中的第i个结点的元素值
int getdate(StaLink space,int i,int head,Element *e){
//此时多加一个Element,而不是直接返回,
//可以理解为Element数据类型不一定为int,方便后续修改和使用 int j=0,s,k=head;                         //补加k=head; s=space[head].cur;//如何考虑i不在范围内 ?if(i>getlen(StaLink,head)||i<1)return 0; while(j<i&&k!=0)                           //补加 k!=0{s=space[s].cur;j++;}if(k==0)return 0;                          //补加 *e=space[j].date;return 1;
} 
8、定位:

确定静态链表head中第1个值为x的结点的位置

//定位:确定静态链表head中第1个值为x 的结点的位置
int locate(StaLink space,int head,Element x){//遍历,比较数据int k;k=space[head].cur;while(space[k].date!=x&&k!=0){k=space[k].cur;}while(k==0)return 0;return k; 
} 
9、插入

在静态链表head的第i个结点之前插入一个值为x的新结点

10、删除

讲静态链表head中的第i个结点

11、输出

从头结点开始,依次输出静态链表head中的所有元素值。

相关文章:

24.8.3数据结构|双向循环链表、静态链表

双向循环链表 节点类型与双链表的节点类型完全相同双向循环链表的操作也与双链表的操作基本一致。 例题 将自然数一到N按由小到大的顺序沿顺时针方向围成一个圈&#xff0c;然后以一为起点先沿顺时针方向数到第N个数将其划去&#xff0c;再沿逆时针方向数到第K个数将其滑去&a…...

C语言典型例题28

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 习题2.5 输入一个华氏温度&#xff0c;要求输出摄氏温度。公式为C5/9(F-32)&#xff0c;要求输出要有文字说明&#xff0c;取两位小数 数学知识&#xff1a; &#xff08;1&#xff09;华氏温度与摄氏温度&#x…...

PHP企业培训考试系统小程序源码

&#x1f680;企业培训考试系统&#xff0c;赋能员工成长新引擎&#x1f4da; &#x1f331; 开篇&#xff1a;解锁企业培训新篇章 在快速变化的商业环境中&#xff0c;员工的能力提升是企业持续发展的关键。&#x1f680; 传统的培训方式已难以满足现代企业的需求&#xff0…...

进程状态(三)----- linux 中具体的进程状态(下)

目录 前言1. T && t 状态2. X 与 Z 状态3. 孤儿进程 前言 继上一篇文章 进程状态&#xff08;二&#xff09;----- linux 中具体的进程状态&#xff08;上&#xff09; 介绍了 linux 系统中具体的 R、S、D 状态&#xff0c;而这篇文章继续介绍 linux 系统中剩下的三种…...

关系型数据库(RDBMS,Relational Database Management System)

关系型数据库&#xff08;RDBMS&#xff0c;Relational Database Management System&#xff09;是一种结构化数据存储系统&#xff0c;它使用表&#xff08;Tables&#xff09;、行&#xff08;Rows&#xff09;和列&#xff08;Columns&#xff09;的结构来组织和管理数据。关…...

使用RK Docker环境编译RK SDK

文章目录 前言Docker介绍实验环境获取RK Docker镜像加载RK Docker镜像使用RK Docker环境编译SDK其它 前言 作为一名嵌入式Linux的学习者&#xff0c;目前编译各种平台&#xff0c;用的都是同一个编译机&#xff08;Ubuntu虚拟机&#xff09;。之前一直在折腾全志&#xff0c;所…...

免费【2024】springboot 付费自习室管理系统的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…...

【学习方法】高效学习因素 ② ( 学习动机 | 内在学习动机 | 外在学习动机 | 外在学习动机的调整方向 | 保护学习兴趣 | 高考竞争分析 )

文章目录 一、高效学习的其它因素 - 学习动机1、学习动机2、内在学习动机3、外在学习动机4、外在学习动机的问题所在5、外在学习动机的调整方向6、保护学习兴趣7、高考竞争分析 上一篇博客 【学习方法】高效学习因素 ① ( 开始学习 | 高效学习因素五大因素 | 高效学习公式 - 学…...

【学习笔记】A2X通信的协议(四)- A2X PC5通信(二)

目录 6.1.2.4 A2X PC5单播链接释放程序 6.1.2.4.1 概述 6.1.2.4.2 发起UE启动A2X PC5单播链接释放程序 6.1.2.4.3 目标UE接受的A2X PC5单播链接释放程序 6.1.2.4.4 发起UE完成的A2X PC5单播链接释放程序 6.1.2.4.5 异常情况 6.1.2.4.5.1 发起UE的异常情况 6.1.2.5 A2X …...

注意!!可能这是《网络管理员》旧教程最后一次考试,赶紧学起来

网络管理员是软考初级资格热门科目之一。近日在国家版本数据中心&#xff0c;小编查到网络管理员官方教程已经有2024最新版出来了&#xff0c;现在这一版教程说实话有些内容已经过时了&#xff0c;尤其新版教材也已经出现&#xff0c;小编推测明年大概率依据新版考试大纲出题&a…...

array postgre gsql 剔除

进行某种过滤或比较操作&#xff0c;判断不匹配的&#xff0c;数组 array 中列出的所有字符串 and a.Repunittree not like all (array[‘%0001003549950003%’,‘%000100460041%’,‘%000100460047%’,‘%000105880001%’ ,‘%000100020007%’,‘%000105830009%’,‘%0001058…...

【Matlab】零阶保持法:连续状态空间方程(含噪声,非线性)离散化处理方法

常用的离散化方法&#xff1a;零阶保持器&#xff08;zero-order hold&#xff0c;ZOH&#xff09;、欧拉法&#xff08;Euler&#xff09;、一阶保持器&#xff08;First-order hold&#xff0c;FOH&#xff09;。最常用的是前两种。 0.零阶保持器&#xff08;ZOH&#xff09…...

web自动化6-pytest⑦一些基本情况

命名规则 1)import pytest 测试文件名要以test_ 开头或 _test结尾 2&#xff09;类名需要以Test开头&#xff08;T&#xff09;&#xff0c;不能带有init方法 3&#xff09;函数名以test_开头&#xff08;t&#xff09; 符合规则框架才能找到用例&#xff0c;一条用例代表一条函…...

apache 漏洞

影响版本 Apache HTTP Server 2.4.49 某些Apache HTTPd 2.4.50也存在此漏洞 环境搭建 docker pull blueteamsteve/cve-2021-41773:no-cgid 漏洞复现 http://1.15.136.212:8080 1.使⽤poc curl http://1.15.136.212:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd...

简单的docker学习 第11章 镜像中心

第11章 镜像中心 Docker Hub 与阿里云都是 Docker 的公网镜像中心&#xff0c;用户可以将自己的镜像 push 到公网镜像中心中自己的镜像仓库&#xff0c;并可将仓库设置为私有库&#xff0c;使他人无法看到&#xff0c;更无法 pull&#xff0c;以保证镜像的安全性。不过&#x…...

PostgreSQL 15 使用物理复制槽 实现主从

一、系统环境 IP操作系统用途192.168.140.153CentOS 7.9.2009pg-主节点192.168.140.159CentOS 7.9.2009pg-从节点 二、单节点安装 2.1 主节点安装 参考前一篇文章 2.2 从节点安装 只需要先将rpm包安装即可&#xff0c;无需初始化数据库&#xff0c;无需启动服务。 三、主从…...

C# 中引用类型的探讨

引用类型的变量不直接包含其数据&#xff1b;它包含对其数据的引用。 如果按值传递引用类型参数&#xff0c;则可能更改属于所引 用对象的数据&#xff0c;例如类成员的值。 但是&#xff0c;不能更改引用本身的值&#xff1b;例如&#xff0c;不能使用相同引用为新对象分配内存…...

技术分享| 前端性能优化——虚拟滚动(Virtual Scroll)

前端遇到大量数据&#xff08;尤其是大数据表&#xff09;的DOM 渲染时&#xff0c;通常会卡顿&#xff0c;需要考虑优化性能问题&#xff0c;这里针对DOM 渲染引出“虚拟滚动”方案&#xff0c; 详细请在以下各文章中详细了解&#xff1a; vue插件 vue-virtual-scroll-list解决…...

Flink 实时数仓(四)【DWD 层搭建(二)流量域事实表】

前言 昨天刚搬到新校区&#xff0c;新校区小的可怜&#xff0c;好在之后出去实习交通可以方便点&#xff1b;待在学院太受限了&#xff0c;早点离开&#xff01; 今天开始完成 DWD 层剩余的需求&#xff0c;上一节我们把日志数据根据不同类型分流写入到了不同的主题&#xff1b…...

Go 1.19.4 接口-Day 10

1. 接口 1.1 基本介绍 接口中到底应该定义些什么&#xff1f; 在Go语言中&#xff0c;接口是声明函数的集合&#xff0c;但只有函数签名&#xff0c;没有具体的功能。 属于是面向对象中&#xff0c;行为的约束&#xff0c;面向对象中的类有自己的属性&#xff08;可以当成数据…...

从字典选择到结果分析:dirsearch高效扫描的完整工作流(含SecLists实战)

从字典选择到结果分析&#xff1a;dirsearch高效扫描的完整工作流&#xff08;含SecLists实战&#xff09; 在Web安全评估和渗透测试中&#xff0c;目录扫描是发现潜在攻击面的关键步骤。传统的手工探测方式效率低下&#xff0c;而盲目使用默认配置的扫描工具又会产生大量无效结…...

Outlook邮箱爆满无法接收邮件怎么办?一篇文章教你用“归档”快速释放空间

&#x1f525;个人主页&#xff1a;杨利杰YJlio❄️个人专栏&#xff1a;《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》《那些年未解决的Windows疑难杂症》&#x1f31f; 让复杂的事情更…...

告别复制粘贴!用Vue CLI插件一键集成Cesium到Vue2老项目

告别复制粘贴&#xff01;用Vue CLI插件一键集成Cesium到Vue2老项目 在Vue2项目中引入Cesium进行3D地理可视化开发时&#xff0c;传统的手动集成方式往往需要处理复杂的Webpack配置、静态资源管理和全局变量注入。这种"复制粘贴"式的集成不仅效率低下&#xff0c;还容…...

手把手教你用Docker部署LiuJuan文生图模型:开箱即用的AI绘画工具

手把手教你用Docker部署LiuJuan文生图模型&#xff1a;开箱即用的AI绘画工具 想在自己的电脑上快速搭建一个AI绘画工具吗&#xff1f;今天我将带你一步步使用Docker部署LiuJuan文生图模型&#xff0c;无需复杂的环境配置&#xff0c;只需几条命令就能拥有一个功能完整的AI绘画…...

nli-distilroberta-base未来展望:与小模型协作及在边缘计算中的角色

nli-distilroberta-base未来展望&#xff1a;与小模型协作及在边缘计算中的角色 1. 小模型的时代价值 在AI领域追求"更大更强"的浪潮中&#xff0c;nli-distilroberta-base这类高效小模型正展现出独特的实用价值。这个经过知识蒸馏的轻量版模型&#xff0c;在保持原…...

Oracle 19c RAC环境下备库node1 ADG异常、asm异常分析及处理

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

Adaptive Wing Loss在热力图回归中的优化策略与实践

1. 热力图回归与Adaptive Wing Loss基础认知 第一次接触热力图回归这个概念时&#xff0c;我盯着屏幕上的高斯分布图发了半小时呆。这种用"软标注"替代硬坐标的方法&#xff0c;就像是用毛笔代替钢笔作画——不再追求像素级的绝对精确&#xff0c;而是通过模糊的色块…...

告别模组管理困境:Lumafly如何让《空洞骑士》模组体验提升80%

告别模组管理困境&#xff1a;Lumafly如何让《空洞骑士》模组体验提升80% 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly 当你花两小时下载安装《空洞骑士》模组…...

智能温控7级调节:ThinkPad用户的风扇噪音与性能平衡终极方案

智能温控7级调节&#xff1a;ThinkPad用户的风扇噪音与性能平衡终极方案 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 你是否经常被ThinkPad笔记本电脑在运行时突然增…...

终极FastAPI环境变量配置指南:从基础到高级的完整实现

终极FastAPI环境变量配置指南&#xff1a;从基础到高级的完整实现 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi 想要构建高效、可维护…...