1 线性表

1.线性表(list):零个或多个数据元素的有限序列

数组和链表的区别:

(1)存储方式不同
数组是连续存储,数组在创建时需要一个整块的空间。
链表是链式存储,链表在内存空间中不一定是连续的。
数组一般创建在栈区,链表一般创建在堆区,在增加节点时需要new或malloc新节点,相较于数组长度不固定,自由度高。
(2)访问元素方式不同
数组可以通过下标随机访问,单向链表只能通过头结点从前向后访问链表中的元素。
(3)增删效率不同
数组在插入或删除的时候需要移动链表中的其他元素,时间复杂的为O(n)。
链表在进行插入删除时,找到要插入或删除的位置后,增删时间复杂度为O(1)。
所以当进行大量的插入和删除操作时建议使用链表,若主要进行查找操作,较少进行插入操作是建议使用数组。

 

2.线性表的顺序存储结构

  优点:(1)无须为表示表中元素之间的逻辑关系而增加额外存储空间;(2)可快速存取表中任一位置元素

  缺点:(1)插入和删除需要移动大量元素;(2)当线性表长度变化较大时,难以确定存储空间的容量;(3)造成存储空间的碎片

3.数组(Array):是有序的元素序列

  数组长度 是存放线性表存储空间的长度,分配后一般不变。

  线性表长度 是线性表中数据元素的个数,随着线性表插入和删除的进行,量是变化的。

java定义数组:

int[] arr = new int[]{1, 2, 3}; 
int[] arr = {1, 2, 3};
int[] arr = new int[3];//数组长度
二维:int[][] arr=new int[3][3]

4.线性表的链式存储结构

  所有元素都不考虑相邻位置,哪里有空位就到哪里,只是让每个元素的位置知道它下一个元素的位置在哪里。

 

   头指针是链表的必要元素,头结点不一定是链表的必需元素。

 java链表基本操作

复制代码
//定义节点类
 public class ListNode {
     int val;//数据域
       
     ListNode() {}//构造方法
     ListNode(int val) { this.val = val; }
     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 }

//创建一个新节点
ListNode list=new ListNode(0) //初始化一个节点值为0的空节点

//遍历
public void displayAllNodes(ListNode list) {
   ListNode current = list;
     while (current != null) {
          System.out.println(current.val);
          current = current. next;
   }
}
//头插入 public void add(ListNode list,int a) { ListNode aNode = new ListNode(a); ListNode current = list;  //在头节点插入 aNode.next=current.next; current.next=aNode; } //删除 public void add(ListNode list) { ListNode current = list;  //删除头结点 current = current.next;
}
复制代码

参考链接:

https://blog.csdn.net/m0_52261367/article/details/123614704

https://blog.csdn.net/qq_51560486/article/details/126454197?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-126454197-blog-123614704.pc_relevant_3mothn_strategy_recovery&spm=1001.2101.3001.4242.2&utm_relevant_index=4


 

 

 
posted @   壹索007  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示