单链表的设计和实现
来源:互联网 发布: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
- 单链表的设计和实现
- spinlock的设计和实现
- spinlock的设计和实现
- spinlock的设计和实现
- AC的设计和实现
- 计算器的设计和实现
- SOCKET类的设计和实现
- 权限管理的设计和实现
- 可扩展的SockBase设计和实现
- SOCKET类的设计和实现
- SOCKET类的设计和实现
- 常见设计模式的解析和实现
- IBuySpy 网上商店的设计和实现
- SOCKET类的设计和实现
- SOCKET类的设计和实现
- SOCKET类的设计和实现
- SOCKET类的设计和实现
- SOCKET类的设计和实现
- v$BH解释
- 信息论几个基本概念
- 黑马程序员——JAVA基础之IO流缓冲区,转换流,字节流
- 海思MPP移植到eclipse下实现在eclipse下用海思交叉编译器实现编译
- [extjs3.4]异步请求
- 单链表的设计和实现
- Oracle复习笔记
- linux 常用的shell脚本
- 请求消息头获取
- OC中Foundation集合的使用(其中包括基本数据类型与对象进行转换)
- RPM包rpmbuild SPEC文件深度说明
- Vs2012在Linux开发中的应用(11): 编译单个文件
- 杨辉三角
- 『ANDROID』android-修改TextView中部分文字的颜色