数据结构与算法(C#)入门 --- 线性表
线性表:
线性表是最简单,最基本,最常用的数据结构。线性表中的数据元素之间存在一对一的关系。即:除了第一个元素,其他元素前面有且只有一个元素;除了最后一个元素,其他元素后面有且只有一个元素。生活中的例子:糖葫芦。
(图片来自网络,侵删)
分类:
根据数据存储结构的不同,大体上可以分为:顺序表,链式表。
顺序表:
在内存中用一块地址连续的空间存放线性表的数据元素,因此查找元素时非常方便。增加或删除元素时,需要移动剩下的元素。
链式表:
不强求用连续的内存空间存放线性表的数据元素。除了基本的数据元素,还有一个标识用于保存逻辑上相邻元素的地址信息。增加或删除元素时,不需要移动元素。
如图所示,(node1-next)是头节点,(node4-next)是尾节点。node1的next指向node2,node2的next指向node3,node3的next指向node4。
LeetCode 练习:
LeetCode 是一个在线的刷题网站,建议上英文网站 https://leetcode.com/ 点击 Problems,在右侧的 Topics 下选择 Linked List。这一步是依据 Topic 选择相应的题目,Linked List 代表了链表。下面我们做几道 Easy 类型的题目巩固一下基础。给出的示例代码不一定是最优解,请做完后阅读Discuss,参考别人的答案。
题目:876.Middle of the Linked List
描述:给定一个非空线性表,返回中间的节点开始的列表。如果中间节点有两个,返回第二个节点后开始的列表。
例如:给定 [1,2,3,4,5],返回 [3,4,5];给定 [1,2,3,4,5,6],返回 [4,5,6]
说明:第一次做题请选择对应的语言。如下图所示,选择了 C#:
思考:
根据示例代码,目的是返回中间的节点。提供的ListNode结构,只有值val与下一个节点next,没有位置标识。
因此我们可以创建一个List集合,遍历head,放入List,然后直接返回中间的节点。参考代码如下:
一般代码写完后,点击下面的 Run Code,初步检查没错后再点击 Submit
代码的运行结果如下:
可见运行速度还是可以的,只是使用的内存稍高一些。
题目:206. Reverse Linked List
描述:链表反转。
思路:相邻对象交换。参考代码如下:
数据结构与算法(C#)入门 --- 线性表的更多相关文章
- JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)
前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...
- 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解
数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...
- 数据结构与算法系列2 线性表 链表的分类+使用java实现链表+链表源码详解
数据结构与算法系列2.2 线性表 什么是链表? 链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表的链接次序实现的一系列节点组成,节点可以在运行时动态生成,每个节点包括两个 ...
- javascript实现数据结构与算法系列:线性表的静态单链表存储结构
有时可借用一维数组来描述线性链表,这就是线性表的静态单链表存储结构. 在静态链表中,数组的一个分量表示一个结点,同时用游标(cur)代替指针指示结点在数组中的相对位置.数组的第0分量可看成头结点,其指 ...
- ACM金牌选手算法讲解《线性表》
哈喽,大家好,我是编程熊,双非逆袭选手,字节跳动.旷视科技前员工,ACM亚洲区域赛金牌,保研985研究生,分享算法与数据结构.计算机学习经验,帮助大家进大厂~ 公众号:『编程熊』 文章首发于: ACM ...
- 已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素
/** * @author:(LiberHome) * @date:Created in 2019/2/27 23:34 * @description: * @version:$ */ /*已知长度为 ...
- 数据结构(1) 第一天 算法时间复杂度、线性表介绍、动态数组搭建(仿Vector)、单向链表搭建、企业链表思路
01 数据结构基本概念_大O表示法 无论n是多少都执行三个具体步骤 执行了12步 O(12)=>O(1) O(n) log 2 N = log c N / log c N (相当于两个对数进行了 ...
- C#数据结构_基本概念及线性表
常见的4类数据结构: 1.集合. 2.线性结构.3.树形结构.4.图状结构. 数据结构(Data Structure)简记为 DS,是一个二元组,DS = (D,R) 其中:D 是数据元素的有限集合, ...
- JavaScript 数据结构与算法之美 - 非线性表中的树、堆是干嘛用的 ?其数据结构是怎样的 ?
1. 前言 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手. 非线性表(树.堆),可以说是前端程序员的内功,要知其然,知其所以然. 笔者写的 JavaScript 数据结构与算法 ...
随机推荐
- pwn学习日记Day1 基础知识积累
ida / od 窗口(针对od操作) 反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址.HEX 数据.反汇编.注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标题 或 显示标题 来进 ...
- linux c tcp p2p
江湖上一直都有这位哥哥的传说,也有很多人说自己就他的真身! 但是... 今天分享一下TCP连接的P2P demo,江湖的规矩也要与时俱进... ———————————————————————————— ...
- 2019-oo-第二次总结
这一单元是关于模拟电梯运行,考验多线程的一个单元,难度由简入入深,从多线程单部电梯,到优化,再到多线程多部电梯,难度一次次的提高. 一.多线程单部电梯(傻瓜调度) 1.设计策略 这一次我只额外的开了一 ...
- HDFS之HA
HDFS高可用环境HA的架构 HDFS组件由一个对外提供服务的namenode(存储元数据)和N个datanode组成:Zookeeper有三个作用:1.为了统一配置文件 config 2.多个节点的 ...
- meta 标签汇总
HTML 里 meta常用标签: " class="mathcode" src="https://private.codecogs.com/gif.latex? ...
- /etc/resolv.conf
/etc/resolv.conf它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序.该文件是由域名解析 器(resolver,一个根据主机名解析IP地址的 ...
- 搭建apache本地服务器·Win
1.下载apache地址:https://www.apachelounge.com/download/ 注意:下载压缩包如下 httpd-2.4.37-win64-VC15.zip 其中根据自己电脑的 ...
- com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '��� mysql-installer-community-8.0.15.0
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &l ...
- PHP7的异常处理机制,set_error_handler和set_exception_handler方法介绍
https://blog.csdn.net/zhang197093/article/details/75094816
- 删除打开方式里的wine
title: "删除打开方式里的wine" date: 2018-05-27T13:54:28+08:00 tags: ["wine"] categories: ...