静态链表基本操作

2023-11-12

增、删、查找位序下标、查找空元素操作

next=-1为表最后一个元素

next=-2为空元素

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct SNode {
	int data;
	int next;// 存放下一个元素的下标
}SLinkList[MaxSize];
// 带头节点
void InitList(SLinkList& L)
{
	L[0].next = -1;//代表没有下一个结点 L为头节点 下标为0
	int i;
	for (i = 1;i < MaxSize;i++)
		L[i].next = -2;//代表结点为空
}
// 插入位序为i 的结点  找到空结点存入数据,从头节点出发找到位序为i-1的结点 修改新节点和i-1结点的next
int GetEmpty(SLinkList L)// 查找空结点的下标
{
	for (int i = 1;i < MaxSize;i++)
	{
		if (L[i].next == -2)
			return i;
	}
	return -1;// 链表已满
}
int GetPos(SLinkList L, int pos)
{
	if (pos >= MaxSize || pos < 0)
	{
		return -1;// 非法访问
	}
	int x = 0;//记录下一个位序的下标
	for (int i = 0; i<pos; i++)
	{
		x = L[x].next;
	}
	return x;
}
bool InsertList(SLinkList &L,int data,int pos)
{
	int i = GetPos(L, pos - 1);// 获取要插入位序的前一个元素的下标
	if (i == -1 || i == 0)
		return false;// 头结点是固定的
	int j = GetEmpty(L);// 获取空结点下标
	if (j == -1)
		return false;
	L[j].data = data;
	L[j].next = L[i].next;
	L[i].next = j;
	return true;
}
bool DeleteList(SLinkList& L, int pos)
{
	int i = GetPos(L, pos - 1);
	int j = L[i].next;
	if (i == -1 || L[i].next == -1)
		return false;
	L[i].next = L[j].next;
	L[j].next = -2;
	return true;
}

相较于动态链表,插入、删除操作不需要移动元素,只需要修改元素中存储的下一位序的下标

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态链表基本操作 的相关文章

  • spring使用xml进行声明式事务管理

  • 最全讲解磁珠

    1 磁珠的定义 磁珠是一种被动组件 用来抑制电路中的高频噪声 磁珠是一种特别的扼流圈 其成分多半为铁氧体 利用其高频电流产生的热耗散来抑制高频噪声 磁珠有时也称为磁环 EMI滤波器 铁芯等 维基百科 磁珠是滤波常用的器件 铁 镍 锌氧化物混
  • 线程池ThreadPoolExecutor之阻塞队列

    在近期的性能优化中 使用了线程池 线程池的定义如下 ExecutorService executorService new ThreadPoolExecutor threadPoolSize threadPoolMaxSize timeou

随机推荐

  • get请求、post请求区别

    991 GET请求一般用去请求获取数据 是无副作用的 是幂等的 POST一般作为提交数据到后台时使用 有副作用 非幂等 2 GET请求也可传参到后台 但是其参数在浏览器的地址栏的url中可见 所以隐私性安全性较差 且参数长度也是有限制的 P
  • C++(day7)

    思维导图 Vector include
  • 关于Jquery的Validate插件------rules规则说明

    Query Validate 插件为表单提供了强大的验证功能 让客户端表单验证变得更简单 同时提供了大量的定制选项 满足应用程序各种需求 该插件捆绑了一套有用的验证方法 包括 URL 和电子邮件验证 同时提供了一个用来编写用户自定义方法的
  • DevOPs介绍,这一篇就足够了

    一 什么是DevOps DevOps是一种将软件开发和IT运维进行整合的文化和运动 它的目标是通过加强软件开发 测试和运维之间的协作和沟通 使整个软件开发和交付过程更加高效 快速 安全和可靠 DevOps涵盖了从计划和设计到开发 测试 交付
  • C语言动态内存管理

    目录 1 函数栈空间 1 1栈上的内存分配 2堆上的内存分配 2 1堆区分配内存的特点 2 2申请空间的操作 2 2 1malloc 2 2 2calloc 2 2 3realloc 2 3申请空间操作的技巧 1 函数栈空间 首先我们需要清
  • 实验---采用SOM网络进行聚类

    1 SOM网络简介 自组织特征映射网络SOFM又称自组织映射网络SOM 是一种自组织竞争神经网络 一个神经网络接受外界输入模式时 将会分为不同的对应区域 各区域对输入模式具有不同的响应特征 而且这个过程是自动完成的 其特点与人脑的自组织特性
  • 快速实现M5311NBIOT MQTT通信

    NBIOT MQTT接入ONE NET云平台 一 本例程实现功能介绍 三 硬件接线图 材料清单 四 完整代码 代码解析 前言 MQTT是一种基于TCP的物联网通信协议 在物联网领域应用非常广泛 基本上所有的云平台都支持设备以MQTT协议接入
  • 如何看懂照片的直方图?

    直方图的观看规则就是 左黑右白 左边代表暗部 右边代表亮部 而中间则代表中间调 纵向上的高度代表像素密集程度 越高 代表的就是分布在这个亮度上的像素很多 上图为例 对于一张 正常 的照片来说 直方图应该是中间高两边低 amp lt img
  • 龙芯笔记

    1 用交叉编译器编译时 也会出现找不到sqlite3 h头文件的情况 需要把sqlite3 h这个头文件放到交叉编译工具目录下的 include 2 mips64el redhat linux g sqlite c lm o sql tes
  • SVM 二分类与模型评估参数

    code 正常输出中文 import io import sys sys stdout io TextIOWrapper sys stdout buffer encoding utf 8 Accuracy AUC Recall Precis
  • 电脑连接KONICA MINOLTA(柯尼卡美能达) 打印机及驱动安装

    电脑系统 Windows 7 安装的打印机型号 Konica minolta bizhub 363 驱动下载 https www konicaminolta com cn support drivers index html 打印机配置好网
  • 财务模块 - 采购、接收、应付会计分录和功能认识

    一 企业采购业务 采购业务是一般企业都会有的业务 主要包括请购 采购 接收 入库 发票 付款几个步骤 分别对应采购 库存 成本 应付以及总账模块 Oracle是财务业务一体化的系统 只要录入了相应的业务 则会自动生成相应的财务信息 1 采购
  • c#观察者模式和事件委托的联合使用

    using System using System Collections Generic using System Linq using System Text using System Threading Tasks 观察者模式和事件委
  • 人才盘点:盘活人力资本的价值

    导读 人才是企业发展的第一资源 也是推动科技进步 创新驱动和提高核心竞争力的关键因素 随着科技日新月异的发展 一些传统产业正面临深度调整甚至颠覆性改变 在这种背景下 企业更应当关注存量人才的配置合理性 培养有市场前瞻和创业精神的高素质人才
  • cookie httponly

    Java 中的JSESSIONID的cookie 默认是httponly 具体啥是httponly 设置cookie为httponly将无法被javascript读取到 所以默认情况下JavaScript是无法通过读取JSESSIONID的
  • Eclipse 导入Go项目

    用Eclipse开发Java的程序员 一想到导入项目 首先是Import 但是发现点击import后 导入不了go项目 所以采用新建的方式来导入Go项目 这个前提是要搭建好Eclipse中Go开发环境 这些有很多可以百度 这里只描述Go项目
  • 发布依赖到maven中央仓库

    目录 前言 一 jira 1 注册 2 新建问题 3 新建关键表单配置 4 问题页面 5 Group id 对应的 域名认证 二 gpg秘钥配置 1gpg下载 三 maven项目配置 也可以看官方文档 1 setting xml 2 pom
  • Linux 查看服务器内存、CPU 命令

    1 服务器CPU情况 cat 1 查看物理CPU个数 Procs 进程 cat proc cpuinfo grep physical id sort uniq wc l 2 查看服务器CPU内核个数 cat proc cpuinfo gre
  • 关于若依框架中v-hasRole/v-hasPermi作用到el-table-column中无法生效问题

    在某些情况下 它是不适合使用v hasPermi 如元素标签组件 只能通过手动设置v if 可以使用全局权限判断函数 用法和指令 v hasPermi 类似
  • 静态链表基本操作

    增 删 查找位序下标 查找空元素操作 next 1为表最后一个元素 next 2为空元素 define CRT SECURE NO WARNINGS include