数据结构(C语言版)01
//顺序存储
int main(){
int ans[5]={1,1,1,1,3};//定义并初始化
printf("%d",ans[4]);
return 0;
}
//链式存储
Typdef struct Lnode{ElemType data;struct Lnode *next;
}Londe,*LinKlist;Londe *L;
L=(LinkList)malloc(sizeof(Lnode));
A->next=B;B->next=C;
线性表:n个想同类型的元素组成的有序集合。(个数有限,每个元素占用相同大小空间,具有逻辑上的顺序性)
直接前驱,直接后继。
顺序表: 线性表的顺序表示(逻辑上相邻,物理上也相邻)
优点:可以随机存取表中任意一个,存储密度高,每个结点只存储数据元素。
缺点:插入和删除操作移动大量元素,数组的大小不好确认,造成很多碎片。
//顺序表的定义
#define Maxsize 50
typedef int Elemtype;
//静态分配
typedef struct {Elemtype data[Maxsize];int len;
}Sqlist;
//动态分配
#define InitSize 100;
typedef struct {Elemtype *data;int capacity;int lenth;
}SepList;//插入操作,插入到第i个元素前面 //L.data[i-1]=e
bool insert(Sqlist&L,int i,Elemtype e){if(i>L.len+1||i<0) return false;if(L.len>Maxsize) return false;for(int j=L.len;j>i-1;j--)L.data[j]=L.data[j-1];L.data[i-1]=e;L.len++;return true;
}
//删除操作,删除第i个元素
bool delet(Sqlist&L,int i){if(i>L.len||i<1) return false;if(L.len>Maxsize) return false;int x=L.data[i-1];for(int j=i-1;j<L.len;j++)L.data[j]=L.data[j+1];L.len--;return true;
}void printSq(Sqlist L){for(int i=0;i<L.len;i++)printf("%4d",L.data[i]);printf("\n");
}int main(){Sqlist L;bool ans;Elemtype del;for(int i=0;i<3;i++)L.data[i]=i;L.len=3;ans=insert(L,2,60);if(ans) printSq(L);ans=delet(L,1);if(ans) printSq(L);return 0;
}
知识点补充:
C的初始动态分配语句:
L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize)
链表:逻辑上相邻的两个元素在物理位置上不相邻。
单链表:
优点:插入删除不需要移动元素,只需要修改指针;不需要大量连续的存储空间。
缺点:附加指针域,浪费存储空间;查找时每次都从头开始,依次查找,不能随机存取
//单链表
typedef struct LNode{ElemType data;struct LNode *next;
}LNode,*LinkList;
头指针:链表中第一个节点的存储位置,用来标识单链表
头结点:在单链表第一个(有值)的节点之前附加的一个结点,为了操作上的方便。(其data一般为空)有了头结点后,对在第一个结点前插入和删除第一个结点就可以统一操作,不用频繁的重置头指针。(但头结点实际上是可有可无的)
//创建新节点
p=(LNode*)malloc(sizeof(LNode))
p->data=x;//按序号查找结点值
LNode *p=L->next;
int j=1;
while(p&&j<i){p=p->next;j++;
}
return p;
//按值查找
LNode q=L->next;
while(q&&q.data!=e)q=q->next;
return q;
对应练习作业:王道OJ | 课时10作业 (lgwenda.com)
答案:核心代码不难,注意输出的格式!!!!
//oj-10
//初始化顺序表
#include<stdio.h>
#define MaxSize 50
typedef struct{int len;int data[MaxSize];
}Sqlist;
//插入元素
bool inseret(Sqlist &L,int i,int e){if(i>=L.len||i<1) return false;if(L.len>=MaxSize) return false;for(int j=L.len;j>=i;j--)L.data[j]=L.data[j-1];L.data[i-1]=e;L.len++;return true;
}
//删除元素
bool delet (Sqlist &L,int i){if(i>L.len||i<1) return false;int x=L.data[i];for(int j=i-1;j<L.len-1;j++){L.data[j]=L.data[j+1];}L.len--;return true;
}
void print(Sqlist L){for(int i=0;i<L.len;i++)printf("%3d",L.data[i]);printf("\n");//return 0;
}
//main()
int main(){Sqlist L;L.data[0]=1;L.data[1]=2;L.data[2]=3;L.len=3;int e;scanf("%d",&e);if(inseret(L,2,e)) print(L);else printf("false\n");int i;scanf("%d",&i);if(delet(L,i)) print(L);else printf("false\n");return 0;
}
相关文章:
数据结构(C语言版)01
//顺序存储 int main(){ int ans[5]{1,1,1,1,3};//定义并初始化 printf("%d",ans[4]); return 0; } //链式存储 Typdef struct Lnode{ElemType data;struct Lnode *next; }Londe,*LinKlist;Londe *L; L(LinkList)malloc(sizeof(Lnode)); A->nextB;B->nextC;…...
Node.js-文件读取输入
Node.js-文件读取输入 fs模块(操作文件的模块) 读取 fs.readFile(path[, options], callback);[]里面 是可选参数,表示以什么样的编码 格式读取path是路径callback表示读取完成后的回调函数 例子 fs.readFile (‘./files/11.txt…...
时隔一年的测评:gpt3.5发展到什么程度了?
名人说:一花独放不是春,百花齐放花满园。——《增广贤文》 作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、简要介绍1、chatgpt是什么?2、主要特点3、工作原理4、应用限制5、使…...
[RCTF2015]EasySQL1 题目分析与详解
一、题目介绍: 1、题目来源: BUUCTF网址 2、题目介绍: 拿到flag。 二、解题思路: 我们发现题目首页有登录和注册账号两个选项,我们首先尝试注册账号,尝试注册username为admin的账号,输入密码…...
开源的 Python 数据分析库Pandas 简介
阅读本文之前请参阅-----如何系统的自学python Pandas 是一个开源的 Python 数据分析库,它提供了高性能、易用的数据结构和数据分析工具。Pandas 特别适合处理表格数据,例如时间序列数据、异构数据等。以下是对 Pandas 的简明扼要的介绍,包括…...
LeetCode 2125.银行中的激光束数量
银行内部的防盗安全装置已经激活。给你一个下标从 0 开始的二进制字符串数组 bank ,表示银行的平面图,这是一个大小为 m x n 的二维矩阵。 bank[i] 表示第 i 行的设备分布,由若干 ‘0’ 和若干 ‘1’ 组成。‘0’ 表示单元格是空的࿰…...
【探索AI】Sora - 探索AI视频模型的无限可能
Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展,AI视频模型已成为科技领域的新热点。而在这个浪潮中,OpenAI推出的首个AI视频模型Sora,以其卓越的性能和前瞻性的技术,引领着AI视频领域的创新发展。让我们将一起探讨…...
NGINX的重写与反向代理机制解析
目录 引言 一、重写功能 (一)if指令 1.判断访问使用的协议 2.判断文件 (二)return指令 1.设置返回状态码 2.返回指定内容 3.指定URL (三)set指令 1.手动输入变量值 2.调用其它变量值为自定义变…...
JVM的深入理解
1、JVM(Java虚拟机):我们java编译时候,下通过把avac把.java文件转换成.class文件(字节码文件),之后我们通过jvm把字节码文件转换成对应的cpu能识别的机器指令(翻译官角色)…...
JavaWeb——007MYSQL(DQL多表设计)
# 数据库开发-MySQL 一级目录二级目录三级目录 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 2. 多表设计2.1 一对多2.1.1 表设计2.1.2 外键约束 2.2 一对一2.3 多对多2.4 案…...
深度学习500问——Chapter01:数学基础
文章目录 前言 1.1 向量和矩阵 1.1.1 标量、向量、矩阵、张量之间的联系 1.1.2 张量与矩阵的区别 1.1.3 矩阵和向量相乘结果 1.1.4 向量和矩阵的范数归纳 1.1.5 如何判断一个矩阵为正定 1.2 导数和偏导数 1.2.1 导数偏导计算 1.2.2 导数和偏导数有什么区别 1.3 特征值和特征向量…...
day03_登录注销(前端接入登录,异常处理, 图片验证码,获取用户信息接口,退出功能)
文章目录 1. 前端接入登录1.1 修改前端代码1.2 跨域请求1.2.1 跨域请求简介1.2.2 COSR概述CORS简介CORS原理 1.2.3 CORS解决跨域 2. 异常处理2.1 提示空消息分析2.2 系统异常分类2.3 异常处理2.2.1 方案一2.2.2 方案二 3. 图片验证码3.1 图片验证码意义3.2 实现思路3.3 后端接口…...
k8s初始化报错 [ERROR CRI]: container runtime is not running: ......
一、环境参数 linux系统为centos7kubernetes版本为v1.28.2containerd版本为1.6.28 二、报错内容 执行初始化命令kubeadm init命令时报错,内容如下 error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR CRI]: container runtime is…...
vscode windows 免密登录 powershell.sh
Linux 生成秘钥 ssh-keygenwindows powershell.sh $HOST_IP"zhang192.168.1.1" $PUBPATH"$HOME\.ssh\id_rsa.pub" $KEY(Get-Content "$PUBPATH" | Out-String); ssh "$HOST_IP" "mkdir -p ~/.ssh && chmod 700 ~/.ssh …...
10 种3D 建模技术
在本文中,我将列出 10 种不同类型的 3D 建模。也许可以了解下一个项目将走向何方,或者你可能会像我一样惊讶,究竟有多少 3D 被用作以多种方式进行可视化的工具。这些是我们将讨论和探索的建模类型: 盒子造型多边形建模Nurbs 和曲…...
常见的socket函数封装和多进程和多线程实现服务器并发
常见的socket函数封装和多进程和多线程实现服务器并发 1.常见的socket函数封装2.多进程和多线程实现服务器的并发2.1多进程服务器2.2多线程服务器2.3运行效果 1.常见的socket函数封装 accept函数或者read函数是阻塞函数,会被信号打断,我们不能让它停止&a…...
Tomcat架构分析
Tomcat的核心组件 Tomcat将请求器和处理器分离,使用多种请求器支持不同的网络协议,而处理器只有一个。从而网络协议和容器解耦。 Tomcat的容器 Host:Tomcat提供多个域名的服务,其将每个域名都视为一个虚拟的主机,在…...
旧项目集成阿里云滑动验证码(web和H5方式)
简述 旧项目集成阿里云滑动验证码(web和H5方式) 适用于servlet和HTML项目,VUE + springboot请看另一篇文档 前情提示 系统: 一说 部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤带有#号、删除线、不操作、不执行…...
机器人内部传感器阅读梳理及心得-速度传感器-数字式速度传感器
在机器人控制系统中,增量式编码器既可以作为位置传感器测量关节相对位置,又可作为速度传感器测量关节速度。当作为速度传感器时,既可以在模拟量方式下使用,又可以在数字量方式下使用。 模拟式方法 在这种方式下,需要…...
【vue+element ui】大屏自适应中el-select下拉内容在低分辨率下显示不全问题解决
目录 背景 现象 解决方案 背景 最近要把一个1920px*1080px的大屏改成自适应的;最低适配到1028px*720px; 现象 自适应适配改完之后 将电脑屏幕改成1028px*720px分辨率后,下拉显示正常 通过谷歌浏览器设置Toggle device toolbar为1028px*…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...
