单链表的设计和实现

来源:互联网 发布:matlab两个矩阵相加 编辑:程序博客网 时间:2024/05/22 08:07

程序代码如下:

package com.jing.day2;/** * 链表的增删改查操作 *  * 场景:水浒传英雄排序 *  * 分析: * 对于链表的操作其实相对来说是比较简单的,只需要从头结点开始遍历,找到需要的位置一切就搞定了。 * 这里需要注意两个问题:不要移动头结点,借助一个临时的指针或者说引用            不要忘记移动指针,否则很容易造成死循环。 *  * @author Administrator * */public class LinkedListDemo {public static void main(String[] args) {//测试遍历英雄的方法,这里采用传统方式构建一个链表//Hero head = new Hero();//Hero h1 = new Hero(1,"宋江","及时雨");//Hero h2 = new Hero(2,"吴用","智多星");//Hero h3 = new Hero(3,"卢俊义","玉麒麟");//head.next = h1;//h1.next = h2;//h2.next = h3;//iteratorHero(head);//测试添加英雄Hero head = new Hero();Hero h1 = new Hero(1,"宋江","及时雨");addHero(head, h1);Hero h2 = new Hero(6,"林冲","豹子头");addHero(head,h2);iteratorHero(head);System.out.println("添加英雄后===========");Hero h3 = new Hero(2,"吴用","智多星");addHero(head,h3);iteratorHero(head);System.out.println("删除英雄后");deleteHero(head, h2);iteratorHero(head);System.out.println("更新英雄后");h3 = new Hero(2,"卢俊义","玉麒麟");updateHero(head, h3);iteratorHero(head);}/** * 查看所有的英雄 * @param head */public static void iteratorHero(Hero head){Hero cur = head;while(cur.next != null){System.out.println(cur.next);cur = cur.next;}}/** * 添加英雄 * @param head * @param newHero */public static void addHero(Hero head,Hero newHero){//添加到最后将指针移到最后,然后添加//Hero cur = head;//while(cur.next != null){//cur = cur.next;//}//cur.next = newHero;//按照排名顺序添加Hero cur = head;while(cur.next != null){if(cur.next.no >= newHero.no){break;}cur = cur.next;}newHero.next = cur.next;cur.next = newHero;}/** * 删除英雄 * @param head * @param destHero */public static void deleteHero(Hero head,Hero destHero){Hero cur = head;while(cur.next != null){if(cur.next.no == destHero.no){break;}cur = cur.next;}cur.next = cur.next.next;}public static void updateHero(Hero head,Hero destHero){Hero cur = head;while(cur.next != null){if(cur.next.no == destHero.no){break;}cur = cur.next;}cur.next.name = destHero.name;cur.next.nikename = destHero.nikename;}//设计英雄static class Hero{public int no;public String name;public String nikename;public Hero next;public Hero(){}//排名、姓名、昵称public Hero(int no, String name, String nikename) {this.no = no;this.name = name;this.nikename = nikename;}@Overridepublic String toString() {return "Hero [no=" + no + ", name=" + name + ", nikename="+ nikename + "]";}}}


0 0
原创粉丝点击