java实现单链表的基本操作
2014-08-12 13:55
351 查看
package link; /** * 单链表模型:实现插入、删除、查找、反转、输出等操作 * @author USER * */ //结点类 class Node{ protected int data; //结点数据 protected Node next; //结点指针 //结点构造方法 public Node(int data) { this.data=data; } public void print() { System.out.print(data+" "); } } //链表类 class Link{ public Node head;//头结点 private int pos = 0; //结点位置 public Link(){ this.head = null; } //插入一个头结点 public void addHeadNode(int data) { Node node = new Node(data); node.next = head;//此处head为null head = node;//此处head为新加入的结点 } //在任意位置index处插入一个结点,插入结点在index之后的那个结点 public void add(int index, int data) { Node node = new Node(data); Node previous = head; Node current = head; while (pos!=index) { previous = current; current = current.next; pos++; } node.next = current; previous.next = node; pos = 0; } //在任意位置index处删除一个结点,删除的是第index个结点,不能删除第一个结点 public void delete(int index) { Node previous = head; Node current = head; pos++; while (pos!=index) { previous = current; current = current.next; pos++; } previous.next = current.next; pos = 0; } //删除头结点 public void deleteHead() { Node temp = head; head = temp.next; } //根据结点位置查找结点信息,注意:index是指第几个位置,pos是从0开始代表第一个位置 public Node findByPos(int index) { Node current = head; pos++; while (pos != index) { current = current.next; pos++; } pos = 0; return current; } //根据结点数据查找结点信息 public Node findByData(int data) { Node current = head; while (current.data != data) { if (current.next == null) { return null; }else { current = current.next; } } return current; } //整个链表的长度 public int length() { int size = 0; Node current = head; while (current != null) { current = current.next; size++; } return size; } //显示整个链表 public void show() { Node current = head; while (current != null) { current.print(); current = current.next; } System.out.println(); } } public class MySingleLinkList { public static void main(String[] args) { Link list = new Link(); list.addHeadNode(10); list.show();//10 list.add(1, 12); list.add(2, 13); list.add(3, 14); list.add(4, 15); list.add(5, 16); list.show();//10 12 13 14 15 16 System.out.println(list.length());//6 list.delete(2); list.show();//10 13 14 15 16 list.delete(2); list.show();//10 14 15 16 System.out.println(list.length());//4 list.deleteHead(); list.show();//14 15 16 System.out.println(list.findByPos(2).data);//15 System.out.println(list.findByPos(3).data);//16 System.out.println(list.findByData(15).data);//15 } }
相关文章推荐
- java自己实现单链表的基本操作
- Java单链表基本操作的实现
- 用java简单的实现单链表的基本操作
- java实现单链表的基本操作
- 用java实现单链表结构与基本数据操作
- Java实现单链表基本操作
- java实现单链表基本操作
- 【用java简单的实现单链表的基本操作】
- 用java简单的实现单链表的基本操作
- 【数据结构和算法】用java简单的实现单链表的基本操作
- 数据结构复习--java实现单链表基本操作
- 用java简单的实现单链表的基本操作
- 递归法实现对单链表的基本操作
- Java的IO操作(二) - 带缓冲区的流对象、写入基本数据类型、实现命令行中的copy命令
- JAVA的solr操作实现(基本操作)
- Redis缓存系统(1)Java-Jedis操作Redis,基本操作以及 实现对象保存
- java实现单链表的添加和插入;评论中设定一个node类节点操作
- 数据结构基础(8) --单链表的设计与实现(1)之基本操作
- 数据结构基础(8) --单链表的设计与实现(1)之基本操作
- JAVA实现DAO层基本CRUD操作