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按由小到大的顺序沿顺时针方向围成一个圈,然后以一为起点先沿顺时针方向数到第N个数将其划去,再沿逆时针方向数到第K个数将其滑去&a…...
C语言典型例题28
《C程序设计教程(第四版)——谭浩强》 习题2.5 输入一个华氏温度,要求输出摄氏温度。公式为C5/9(F-32),要求输出要有文字说明,取两位小数 数学知识: (1)华氏温度与摄氏温度&#x…...
PHP企业培训考试系统小程序源码
🚀企业培训考试系统,赋能员工成长新引擎📚 🌱 开篇:解锁企业培训新篇章 在快速变化的商业环境中,员工的能力提升是企业持续发展的关键。🚀 传统的培训方式已难以满足现代企业的需求࿰…...
进程状态(三)----- linux 中具体的进程状态(下)
目录 前言1. T && t 状态2. X 与 Z 状态3. 孤儿进程 前言 继上一篇文章 进程状态(二)----- linux 中具体的进程状态(上) 介绍了 linux 系统中具体的 R、S、D 状态,而这篇文章继续介绍 linux 系统中剩下的三种…...
关系型数据库(RDBMS,Relational Database Management System)
关系型数据库(RDBMS,Relational Database Management System)是一种结构化数据存储系统,它使用表(Tables)、行(Rows)和列(Columns)的结构来组织和管理数据。关…...
使用RK Docker环境编译RK SDK
文章目录 前言Docker介绍实验环境获取RK Docker镜像加载RK Docker镜像使用RK Docker环境编译SDK其它 前言 作为一名嵌入式Linux的学习者,目前编译各种平台,用的都是同一个编译机(Ubuntu虚拟机)。之前一直在折腾全志,所…...
免费【2024】springboot 付费自习室管理系统的设计与实现
博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围: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 …...
注意!!可能这是《网络管理员》旧教程最后一次考试,赶紧学起来
网络管理员是软考初级资格热门科目之一。近日在国家版本数据中心,小编查到网络管理员官方教程已经有2024最新版出来了,现在这一版教程说实话有些内容已经过时了,尤其新版教材也已经出现,小编推测明年大概率依据新版考试大纲出题&a…...
array postgre gsql 剔除
进行某种过滤或比较操作,判断不匹配的,数组 array 中列出的所有字符串 and a.Repunittree not like all (array[‘%0001003549950003%’,‘%000100460041%’,‘%000100460047%’,‘%000105880001%’ ,‘%000100020007%’,‘%000105830009%’,‘%0001058…...
【Matlab】零阶保持法:连续状态空间方程(含噪声,非线性)离散化处理方法
常用的离散化方法:零阶保持器(zero-order hold,ZOH)、欧拉法(Euler)、一阶保持器(First-order hold,FOH)。最常用的是前两种。 0.零阶保持器(ZOH)…...
web自动化6-pytest⑦一些基本情况
命名规则 1)import pytest 测试文件名要以test_ 开头或 _test结尾 2)类名需要以Test开头(T),不能带有init方法 3)函数名以test_开头(t) 符合规则框架才能找到用例,一条用例代表一条函…...
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 的公网镜像中心,用户可以将自己的镜像 push 到公网镜像中心中自己的镜像仓库,并可将仓库设置为私有库,使他人无法看到,更无法 pull,以保证镜像的安全性。不过&#x…...
PostgreSQL 15 使用物理复制槽 实现主从
一、系统环境 IP操作系统用途192.168.140.153CentOS 7.9.2009pg-主节点192.168.140.159CentOS 7.9.2009pg-从节点 二、单节点安装 2.1 主节点安装 参考前一篇文章 2.2 从节点安装 只需要先将rpm包安装即可,无需初始化数据库,无需启动服务。 三、主从…...
C# 中引用类型的探讨
引用类型的变量不直接包含其数据;它包含对其数据的引用。 如果按值传递引用类型参数,则可能更改属于所引 用对象的数据,例如类成员的值。 但是,不能更改引用本身的值;例如,不能使用相同引用为新对象分配内存…...
技术分享| 前端性能优化——虚拟滚动(Virtual Scroll)
前端遇到大量数据(尤其是大数据表)的DOM 渲染时,通常会卡顿,需要考虑优化性能问题,这里针对DOM 渲染引出“虚拟滚动”方案, 详细请在以下各文章中详细了解: vue插件 vue-virtual-scroll-list解决…...
Flink 实时数仓(四)【DWD 层搭建(二)流量域事实表】
前言 昨天刚搬到新校区,新校区小的可怜,好在之后出去实习交通可以方便点;待在学院太受限了,早点离开! 今天开始完成 DWD 层剩余的需求,上一节我们把日志数据根据不同类型分流写入到了不同的主题;…...
Go 1.19.4 接口-Day 10
1. 接口 1.1 基本介绍 接口中到底应该定义些什么? 在Go语言中,接口是声明函数的集合,但只有函数签名,没有具体的功能。 属于是面向对象中,行为的约束,面向对象中的类有自己的属性(可以当成数据…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...



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