j***a语言单向链表顺序,j***a的单向链表

kodinid 39 0

大家好,今天小编关注到一个比较意思的话题,就是关于java语言单向链表顺序问题,于是小编就整理了4个相关介绍j***a语言单向链表顺序的解答,让我们一起看看吧。

  1. 单链表的访问规则?
  2. 邻接表法?
  3. 为什么链表是顺序存储结构?
  4. list mylist这个怎么看不懂,懂得解释一下?

单链表的访问规则?

所谓的访问可以理解为取各个结点数据域的值进行一系列的操作输出单向链表各个结点的数据域是最简单的访问链表的操作。

将链表中各个结点数据一次输出的步骤主要如下:

java语言单向链表顺序,java的单向链表-第1张图片-安济编程网
图片来源网络,侵删)

(1),找到链表的头指针

(2),若链表非空,则输出结点的成员值。否则退出

(3),寻找下一个结点

java语言单向链表顺序,java的单向链表-第2张图片-安济编程网
(图片来源网络,侵删)

(4),转到步骤2

邻接表法?

邻接表,存储方法跟树的孩子表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。

对于无向图来说,使用邻接表进行存储也会出现数据冗余,表头结点A所指链表中存在一个指向C的表结点的同时,表头结点C所指链表也会存在一个指向A的表结点。

java语言单向链表顺序,java的单向链表-第3张图片-安济编程网
(图片来源网络,侵删)

什么链表是顺序存储结构?

链表 是一种物理存储结构上非连续、非顺序的存储结构。

数据元素逻辑顺序是通过链表中的指针链接次序实现的。链表有八种形式,单向,双向,带头,不带头(有无新节点),循环,非循环。在这八种形式中常用的是无头单向不循环链表(结构简单,一般不会单独用来存数据,实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。)和有头双向循环链表(结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。

list mylist这个怎么看不懂,懂得解释一下?

基础的单向链表定义,自定义了一个类叫ListNode,包括一个int值和一个指针指向下一个ListNode。然后基于这个类又定义了一个List类,其实是指向一个ListNode的指针。

基于上述这两个类的定义,在main函数声明了一个mylist变量,变量的类是List即指向ListNode的指针,然后初始化的时候将mylist的即指向这个指针的指针传给了初始化函数。初始化函数干了什么呢?就是传进来的指针所指向的值设成NULL。

回想一下传进去的是指向指针的指针,那么这个指针所指向的值就是指向ListNode的指针,把这个指针设为NULL就是说一开始我什么都不指,这是符合初始化的定义的。

你又要问了,为什么不直接把mylist传进去,而是把mylist的地址传进去?这就涉及到C函数传参时的值传递还是引用传递,我们叫Pass by value 或者pass by reference。值传递的时候,函数里对参数(行参)做什么改变,出了这个函数(实参)是看不见的。只有当引用传递的时候,在函数里对参数的设置可以在出了函数之后继续有效。在这个例子里就是对mylist的初始化。调用完这个函数,我们就可以确定mylist现在指向的是NULL而不是别的了。

补充说明:list是类型,mylist是变量名,你也可以叫它yourlist或者hislist。任何变量都有地址,即使是结构体。

新手理解数据结构和算法的最好办法是写代码编译运行,可以尝试着修改例子,以加深对原理的理解和认识。

到此,以上就是小编对于j***a语言单向链表顺序的问题就介绍到这了,希望介绍关于j***a语言单向链表顺序的4点解答对大家有用。

标签: 结点 指针 指向