数组和链表-《算法图解》学习

news/2024/9/22 14:35:22

内存工作原理

需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存
储多项数据时,有两种基本方式——数组和链表。但它们并非都适用于所有的情形,因此知道它
们的差别很重要。接下来介绍数组和链表以及它们的优缺点。
 
==============to be conntinued================

1、什么是链表Java LinkedList

标准答案:链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,有一系列结点(地址)组成,结点可动态的生成。

个人理解:链表是离散的表,n个节点组成,每个节点有2部分:1个是本节点存储的数据,1个是下一个节点的地址(指向下一个节点的指针)。操作系统上为了提高内存管理的效率,存储数据时有离散算法,那么链表应该也是为了提高数据的存储效率的一种数据类型。

 

与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。

以下情况使用 ArrayList :

  • 频繁访问列表中的某一个元素。
  • 只需要在列表末尾进行添加和删除元素操作。

以下情况使用 LinkedList :

  • 你需要通过循环迭代来访问列表中的某些元素。
  • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。// 引入 LinkedList 类
import java.util.LinkedList;public class RunoobTest {public static void main(String[] args) {LinkedList<String> sites = new LinkedList<String>();sites.add("Google");sites.add("Runoob");sites.add("Taobao");sites.add("Weibo");
// 使用 addLast() 在尾部添加元素
        sites.addLast("Wiki");
// 使用 removeFirst() 移除头部元素
        sites.removeFirst();
// 使用 removeLast() 移除尾部元素
        sites.removeLast();
// 使用 getFirst() 获取头部元素
        System.out.println(sites.getFirst());
// 使用 getLast() 获取尾部元素
        System.out.println(sites.getLast());
//可以使用 for 配合 size() 方法来迭代列表中的元素:
for (int size = sites.size(), i = 0; i < size; i++) {
            System.out.println(sites.get(i));System.out.println(sites);} }

  

2、链表C语言

2.1创建链表节点create_node

2.2插入节点

 2.3遍历链表

void show(struct node  *p)
{	while(1){		if(p== NULL)  //假设p已经为NULL则返回 {return ;}				printf("p=%d\n",p->data);		p  = p->next;  //链表的重要知识点!!! 遍历节点向下走 		}	
}

3、链表算法题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/47023.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

爬取同样内容,xpath方法会比bs4要慢很多吗?

大家好,我是Python进阶者。 一、前言 前几天在Python白银交流群【沐子山树】问了一个Python网络爬虫的问题,问题如下:爬取同样内容,xpath方法会比bs4要慢很多吗? 二、实现过程 这里【Kimi】给了个思路如下: 爬取网页内容时,使用XPath和BeautifulSoup(bs4)这两种方法的…

FPGA学习网站推荐

FPGA学习网站推荐 本文首发于公众号:FPGA开源工坊 引言 FPGA的学习主要分为以下两部分语法 领域内知识做FPGA开发肯定要首先去学习相应的编程语言,FPGA开发目前在国内采用最多的就是使用Verilog做开发,其次还有一些遗留下来的项目会采用VHDL做开发,现在有一部分公司也开始使…

UaG论文阅读笔记

User-as-Graph: User Modeling with Heterogeneous Graph Pooling for News Recommendation论文阅读笔记 Abstract 现存的问题 ​ 现有的新闻推荐方法通常通过顺序模型或关注模型从用户行为中建立用户兴趣模型。然而,它们无法对用户行为之间的丰富关联性进行建模,而这种关联性…

搭建yolov8模型训练的环境_制作docker镜像_模型训练

搭建yolov8模型训练的环境、制作docker镜像、模型训练搭建一个能进行yolov8模型训练的环境,包括CUDA 11.x、cuDNN 8.x、Ubuntu 18.04、Python 3.8、Cython、NumPy、PyTorch、YOLOv8、Ultralytics等依赖(其实ultralytics 包会包含 YOLOv8 及其相关工具)。在 Docker 容器中,不…

OCP4.2.2 主机标准化检查系统配置项修复clocksource 报错

适应版本: 社区版本OCP:4.2.2-20240315150922 背景描述OCP纳管主机后进行主机标准化时,set clock source一直没有成功 自动修复后还是有问题 分析过程查看官方ocp.4.2文档,有相关信息 执行相关命令再次查看文件并未写入tsc 重新检查 自动修复,报错一样,说明刚设置的没有…

一款.NET开源的i茅台自动预约小助手

前言 今天大姚给大家分享一款.NET开源、基于WPF实现的i茅台APP接口自动化每日自动预约(抢茅台)小助手:HyggeImaotai。项目介绍 该项目通过接口自动化模拟i茅台APP实现每日自动预约茅台酒的功能,软件会在指定时间开始对管理的用户进行批量预约。 项目功能用户管理 预约项目 …

Rocky Linux捣鼓记录(五):安装flatpak软件仓库,并更换国内源

1、安装flatpak sudo dnf install flatpak 2、安装flatpak的官方源先安装官方仓库:注意此处命名为:flathub,这个名称是用来区分仓库的,后续修改国内源也要指定这个名称flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo 3、更改…

控制系统中的增益与控制极限环的关系

代码:s=tf(s); K=[2 4 6 8 10 12]; sysK=K(1); sysG=(s+1)^2/s^3; %sysZ=feedback(series(sysKxxl,sysGsc),1);subplot(231) rlocus(feedback(series(K(1),sysG),1)) grid on legend subplot(233) rlocus(feedback(series(K(2),sysG),1)) grid on legend subplot(232) rlocus(…