单链表基本操作java实现
2016-09-26 20:04
453 查看
单链表基本操作 - java实现
1.单链表学习了好久,今天终于有时间写一下了,带头结点的单链表上的基本操作,Java实现。(1) 先来个接口
public interface IList { public void clear(); //清空链表 public boolean isEmpty(); //链表判空 public int length(); //链表的长度 public Object get(int i) throws Exception; //按照位序号查找 public void insert(int i,Object x) throws Exception; //添加节点 public void remove(int i) throws Exception; //删除节点 public int indexOf(Object x); //按照数据查找位序号 public void display(); //输出链表 }
(2)Java实现单链表
//节点的定义 class Node{ public Object data; public Node next; //无参构造方法 public Node(){ this(null,null); } //一个参数的构造方法 public Node(Object data){ this(data,null); } //两个参数的构造方法 public Node(Object data, Node next){ this.data = data; this.next = next; } } //单链表定义 public class LinkList implements IList{ public Node head; //构造方法 public LinkList(){ head = new Node(); } //清空链表 @Override public void clear() { // TODO Auto-generated method stub head.data = null; head.next = null; } //链表判空 @Override public boolean isEmpty() { // TODO Auto-generated method stub return head.next == null; } //链表长度 @Override public int length() { // TODO Auto-generated method stub Node p = head.next; int length = 0; while(p!=null){ p=p.next; length++; } return length; } //按位序号查找 @Override public Object get(int i) throws Exception{ // TODO Auto-generated method stub Node p = head.next; int j = 0; while(p!=null&&j<i){ p = p.next; ++j; } if(j>i || p == null){ throw new Exception("第"+i+"个元素不存在"); } return p.data; } //插入元素 @Override public void insert(int i, Object x) throws Exception{ // TODO Auto-generated method stub Node p = head; int j = -1; while(p!=null && j<i-1){ p = p.next; j++; } if( j>i-1 || p==null){ throw new Exception("插入位置不合法"); } Node s = new Node(x); s.next = p.next; p.next = s; } //删除元素 @Override public void remove(int i) throws Exception { // TODO Auto-generated method stub Node p = head; int j = -1; while(p.next != null && j < i-1){ p = p.next; j++; } if(p.next == null || j > i-1){ throw new Exception("删除位置不存在"); } p.next = p.next.next; } //根据值查找位序号 @Override public int indexOf(Object x) { // TODO Auto-generated method stub Node p = head.next; int j=0; while(p.next != null && !p.data.equals(x)){ p = p.next; j++; } if(p.next != null){ return j; } else { return -1; } } //输出链表 @Override public void display() { // TODO Auto-generated method stub Node p = head.next; int j = 0; while(p != null){ System.out.println("第"+j+"个节点是:"+p.data); p = p.next; j++; } } /* * 测试用的,忽略 */ // public static void main(String[] args) throws Exception{ // LinkList mylist = new LinkList(); // mylist.insert(0,0); // mylist.insert(1,1); // mylist.insert(2,2); // mylist.insert(3,3); // mylist.insert(2,4); // mylist.display(); // System.out.println(mylist.indexOf(2)); // System.out.println(mylist.get(3)); // mylist.remove(3); // mylist.display(); // System.out.println(mylist.isEmpty()); // System.out.println(mylist.indexOf(7)); // mylist.clear(); // System.out.println(mylist.isEmpty()); // } }
相关文章推荐
- JAVA实现链表的基本操作
- java实现链表基本操作
- 链表的基本操作java语言实现
- 链表及其基本操作的JAVA实现。
- 链表基本操作java实现
- 不带头节点的单链表及其基本操作(Java实现)
- Java实现单链表插入删除等基本操作
- Java实现--链表基本操作
- 带头节点的单链表及其基本操作(Java实现)
- java单向链表基本操作简单实现
- java模拟LinkedList实现双链表,完成基本操作
- 单链表的基本操作与算法(Java实现)
- 链表的基本操作与拓展操作(Java语言实现)
- 链表的java实现以及基本的增加,删除,排序操作
- Java实现双向链表的基本操作
- 用java简单的实现单链表的基本操作
- [C++]数据结构:有序链表SortedChain的基本实现与操作
- Java的IO操作(二) - 带缓冲区的流对象、写入基本数据类型、实现命令行中的copy命令
- 链表的基本操作实现
- 带头结点的链表实现线性表的基本操作