1,链表是以节点的方式来存储的;
2,每个节点包含data域、next域:指向下一个节点;
3,链表的每个节点不一定是连续的;
4,链表分带头节点的链表,和不带头节点的链表,根据实际情况来决定。
带头节点的单向链表
头节点
1,存放具体数据
2,作用就是作为单链表的头
带头节点的单链表
添加(创建)
1,先创建一个头结点
2,添加其他节点,直接加入到链表的最后
package com.datastack.linkedlist; public class SimpleLinkedList { public HeroNode head = new HeroNode(0,"","");//头结点 /** * 添加方法:不考虑顺序添加 * 1,找到最后节点 * 2,将最后节点的next指向 新的节点 * @param heroNode */ public void add(HeroNode heroNode){ HeroNode temp = head; while(true){ if(temp.next == null){ break; } temp = temp.next; } temp.next = heroNode; } /** * 按编号从小到大顺序添加 * @param heroNode */ public void addByOrder(HeroNode heroNode){ HeroNode temp = head; boolean flag = false;//标识添加的编号是否存在 while(true){ if(temp.next == null){ break; } if(temp.next.no > heroNode.no){ break; }else if(temp.next.no == heroNode.no){ flag = true; break; } temp = temp.next; } if(flag){ System.out.printf("准备插入的英雄的编号 %d 已存在,不能添加\n",heroNode.no); }else{ heroNode.next = temp.next; temp.next = heroNode; } } /** * 显示链表 */ public void list(){ //判断链表是否为空 if(head.next == null){ System.out.println("链表为空"); return; } HeroNode temp = head.next; while(true){ if(temp == null){ break; } System.out.println(temp); temp = temp.next; } } /** * 修改 * @param heroNode */ public void update(HeroNode heroNode){ HeroNode temp = head.next; boolean flag = false;//表示是否找到该节点 while(true){ if(temp == null){ break; } if(temp.no == heroNode.no){ flag = true; break; } temp = temp.next; } if(flag){ temp.name = heroNode.name; temp.nickname = heroNode.nickname; }else{ System.out.println("没有找到要修改的编号"); } } /** * 删除 * @param heroNode */ public void delete(int no){ HeroNode temp = head; boolean flag = false;//是否找到要删除的节点 while(true){ if(temp.next == null){ break; } if(temp.next.no == no){ flag = true; break; } temp = temp.next; } if(flag){ temp.next = temp.next.next; }else{ System.out.println("没有找到要删除的节点"); } } }
package com.datastack.linkedlist; public class HeroNode { public int no; public String name; public String nickname;//昵称 public HeroNode next;//下一个节点 //构造器 public HeroNode(int no,String name,String nickname){ this.no = no; this.name = name; this.nickname = nickname; } //打印 public String toString(){ return "HeroNode [no="+no+",name="+name+",nickname="+nickname+"]"; } }
package com.datastack.linkedlist; public class SimpleLinkedListDemo { public static void main(String[] args) { HeroNode hero1 = new HeroNode(1, "宋江", "及时雨"); HeroNode hero3 = new HeroNode(3, "吴用", "智多星"); HeroNode hero2 = new HeroNode(2, "卢俊义", "王麒麟"); HeroNode hero4 = new HeroNode(4, "林冲", "爆炸头"); SimpleLinkedList linkedList = new SimpleLinkedList(); linkedList.addByOrder(hero1); linkedList.addByOrder(hero4); linkedList.addByOrder(hero2); linkedList.addByOrder(hero3); linkedList.list(); HeroNode heroNode = new HeroNode(2, "wuyong", "wy"); linkedList.update(heroNode); System.out.println("修改后"); linkedList.list(); System.out.println("删除后"); linkedList.delete(1); linkedList.list(); System.out.println("删除后"); linkedList.delete(4); linkedList.list(); } }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。