做货代网站,佛山专业外贸网站建设,计算机网站建设论文总结,网站建设 公司 天津文章目录 节点类定义单链表类总结 单链表是一种常用的数据结构#xff0c;它由若干个节点#xff08;Node#xff09;组成#xff0c;每个节点包含两部分#xff1a;一部分是数据域#xff0c;用于存储数据#xff1b;另一部分是指针域#xff0c;用于指向下一个节点。… 文章目录 节点类定义单链表类总结 单链表是一种常用的数据结构它由若干个节点Node组成每个节点包含两部分一部分是数据域用于存储数据另一部分是指针域用于指向下一个节点。。 节点类
定义的节点类
public class HeroNode {public int no;public String name;public HeroNode next; //指向下一个节点public HeroNode(int no, String name, HeroNode next) {this.no no;this.name name;this.next next;}Overridepublic String toString() {return HeroNode{ no no , name name \ };}}在这个代码中HeroNode 类定义了三个实例变量no 表示英雄编号name 表示英雄姓名next 表示指向下一个节点的引用。
构造方法用于初始化对象的属性toString() 方法用于打印节点的信息。 定义单链表类
public class SingleLinkedList {/** 初始化头节点 不存放数据 只是一个标记 */private HeroNode head new HeroNode(0, , null);/** 插入节点 尾插法 */public void add(HeroNode newNode){if( newNode null ){return;}HeroNode currentNode head;while ( currentNode.next ! null ) {currentNode currentNode.next;}currentNode.next newNode;}/** 修改节点 */public void update(HeroNode newNode){if( newNode null ){return;}HeroNode currentNode head.next;while ( currentNode ! null ){if( currentNode.no newNode.no ){currentNode.name newNode.name;}currentNode currentNode.next;}}/** 删除节点 */public void delNode(int no){HeroNode currentNode head;while ( currentNode ! null currentNode.next ! null ) {if( currentNode.next.no no ){currentNode.next currentNode.next.next;}currentNode currentNode.next;}}/** 展示列表 */public void show(){HeroNode currentNode head.next;while ( currentNode ! null ) {System.out.println(currentNode);currentNode currentNode.next;}}}在 SingleLinkedList 类中实现了以下几个方法
add(HeroNode newNode)在链表的尾部插入一个新节点。
update(HeroNode newNode)根据节点编号找到指定节点并更新节点的姓名。
delNode(int no)根据节点编号找到指定节点的前一个节点并将其 next 引用指向下一个节点从而实现删除节点的功能。
show()遍历链表并打印每个节点的信息。
这些方法都是单链表常见的操作有几个小地方需要注意
在 add(HeroNode newNode) 方法中使用的是尾插法即将新节点添加到链表的尾部。这是常用的插入方法之一可以有效地保持链表的顺序性。
在 update(HeroNode newNode) 方法中首先需要找到待修改的节点然后更新其数据。这是正确的操作。但是在找到节点后没有中断循环而是继续遍历链表直到结束是因为考虑到链表中可以存在重复的节点。
在 delNode(int no) 方法中首先需要找到待删除节点的前一个节点然后将其 next 引用指向待删除节点的下一个节点。
在 show() 方法中你首先将头节点赋给 currentNode然后通过 currentNode.next 遍历链表。这样做是为了跳过头节点只展示真实数据节点。这也是常见的展示列表的操作。 以上就是一个单链表的简单的实现。 总结
单链表的特点包括
链表中的节点是通过指针相连的每个节点都指向下一个节点最后一个节点指向空null。单链表可以动态地增加、删除节点而不需要移动其他节点的位置。链表的插入和删除操作效率高时间复杂度为 O(1)。链表的查找操作相对较慢时间复杂度为 O(n)需要从头节点开始依次向后遍历。
单链表的优势在于可以方便地进行插入和删除操作但其缺点是查找操作效率较低。在实际编程中单链表常用于不需要频繁查找操作但需要频繁插入和删除操作的场景中。
单链表是一种重要的数据结构能够有效地解决一些特定的问题例如处理动态数据或者构建一些数据结构。