首页 > 其他分享 >【线性表】链表

【线性表】链表

时间:2023-12-26 20:22:23浏览次数:33  
标签:线性表 val int next 链表 数组 指针

本来要先讲数组的,介于之前已经总结过可变数组vector了,故不再开一个专题去介绍用法和原理。但是要提一嘴:

数组作为数据结构可以高效地存储和查询给定索引(下标)的数据,其时间复杂度均为O(1),因为这个性质,数组可以用来模拟其他很多数据结构,但是如果要将整个数组进行移位操作,例如在中间插入和删除数据,或者在没排序的情况下搜索指定元素,那么时间复杂度可达到O(n),效率很低的。

那么,我们就从链表开始学习数据结构吧!

链表是一种物理存储单元上非连续、非顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。但是我们这里先介绍静态链表(由数组模拟链表)以先了解链表的各项操作。简单来说:链表能知道每个元素之前/之后是谁,这样能恢复整个表的排列顺序。利用这种方式,来存储元素排列顺序的表,称为链表。

链表由三个重要部分组成,next指针,value,idx指针,head指针分别用来记录后续节点的下标,当前节点的值,标明使用节点的指针,头指针。

struct ListNode {
       int next;
       int val;
       ListNode(int _val=0,int _next=0) //初始化
       {next=_next;val=_val;}
};

ListNode Node[MAXSIZE];	
int idx;      //当前用的元素的指针
int head=-1; //初始化头指针

 

标签:线性表,val,int,next,链表,数组,指针
From: https://www.cnblogs.com/Yukie/p/17927363.html

相关文章

  • 【数据结构】第二章——线性表(4)
    线性表的链式表示导言大家好,很高兴又和大家见面啦!!!在前面的内容中我们介绍了线性表的第一种存储方式——顺序存储,相信大家经过前面的学习应该已经掌握了对顺序表的一些基本操作了。今天,我们将开始介绍线性表的第二种存储方式——链式存储。一、链式存储线性表中的数据元素在存储时,......
  • CSP-S 2023消消乐 字符串哈希做法and链表优化dp做法
    做完这题感觉整个人都升华了...打算说一下两种做法,字符串哈希和dp均可。dp则需要维护一个前向星去检索出第一个符合要求的位置。题解明天补,先写高数了。#include<bits/stdc++.h>#defineintlonglong#defineullunsignedlonglong#definerep(i,a,b)for(inti=(a);i<......
  • C++简单实现list链表数据结构(一)
    链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的。链表的组成:链表由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域C++STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内存空......
  • 142. 环形链表Ⅱ
    给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。不允许修改链表。整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。......
  • c语言单链表
    #include<stdio.h>#include<stdlib.h>#defineERROR-1#defineSUCCESS0structlist_node{intdata;structlist_node*next;/*data*/};typedefstructlist_nodelink_list;intlist_get_size(link_list*list){intcount=0;......
  • 力扣234-回文链表
    难度:【简单】第一个想法是用栈,提交代码3次都显示解答错误。原因:第一次是没考虑一个节点的情况;第二次是不应该通过栈剩余元素个数判断单节点情况;第三次是没有考虑奇数个节点的情况。看官方题解,重新思考。用数组最容易解,时空复杂度都是O(n)。刚开始用栈是以为能优化到进阶的O(1)......
  • 【数据结构】第二章——线性表(2)
    线性表的顺序表示导言大家好,很高兴又和各位见面啦!!!在上一个篇章中,我们简单了解了一下线性表的基础知识以及一下重要的术语。在今天的篇章中我们将来开始正式介绍线性表的顺序存储——又称顺序表。我们将会在本章介绍什么是顺序表,对于顺序表的操作我们又应该如何实现。接下来,我们就来......
  • 链表
    约瑟夫问题(洛谷P1996)题目大意用Markdown写博客一年多了,最开始是用富文本写,后来发现Markdown更适合我,而且CSDN提供了导入导出的功能,图片可以云存储,所以导出了博文在本地也可以直接看,尤其是笔记类型很方便。所以这里总结一下自己常用模板和小伙伴们分享下[这里写一些为啥要整理......
  • 【算法】【线性表】移除元素
    1 题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例1:输......
  • 【重排链表】双指针+反转链表+合并链表
    leetcode143.重排链表题意:给定一个单链表L的头节点head,单链表L表示为:L0→L1→…→Ln-1→Ln请将其重新排列后变为:L0→Ln→L1→Ln-1→L2→Ln-2→…不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。题解:可以发现重新排列的链......