当前位置: 首页 > 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;可以当成数据…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...