java实现单链表
来源:互联网 发布:openstack源码解析 编辑:程序博客网 时间:2024/06/06 08:51
java实现单链表的难度关键在于插入。下面是我用java实现单链表的过程,着重介绍一下插入的实现与原理。
在实现插入前,首先新建一个Node类,这个类的主要成员变量为Element与next。
代码如下:
package list;public class Node { private Object element; private Node next; public Node() { // TODO Auto-generated constructor stub } public Node(Object element){ this.element = element; } public Node(Object element,Node next){ this.element = element; this.next = next; } public Object getElement() { return element; } public void setElement(Object element) { this.element = element; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; }}
然后实现insert方法,在实现insert的过程中,关键点在于先循环找到插入位置i之前的节点i-1,然后新建节点的指针指向i,将i-1的指针指向新建节点
代码如下:
public void inset(int i, Object x) throws Exception { Node p = head; int j = 0; while (p!=null&&j<i-1) {// 循环直到p为第i-1个节点 p = p.getNext(); j++; }// 添加新节点,先得到p后的节点地址赋值给node.next;再将node地址赋值给p.next; Node node = new Node(x); node.setNext(p.getNext()); p.setNext(node); }
这样,就实现了单链表中的插入方法,接下来是单链表的建表。单链表的建表分为头插法和尾插法。下面分别实现头插法与尾插法。
在头插法建表过程中,只要把insert方法中的插入位置i设为0即可。
代码如下:
public Node headCreate(int n) throws Exception { Scanner scanner = new Scanner(System.in); for (int i = 0; i < n; i++) {// 读入n个object,将其用头插法插入单链表 inset(1, scanner.next()); } scanner.close(); return head; }
在尾插法建表过程中,只要把insert方法中的插入位置i设为读入顺序即可
代码如下
public Node tailCreate(int n) throws Exception { Scanner scanner = new Scanner(System.in); for (int i = 1; i <= n; i++) {// 读入n个object,将其按读入顺序依次插入 inset(i, scanner.next()); } scanner.close(); return head; }
下面是源码的链接 http://download.csdn.net/detail/bigevil/8563675
0 0
- 【算法数据结构Java实现】Java实现单链表
- java实现单链表
- Java实现单链表
- java--实现单链表
- Java单链表的实现
- java实现单链表
- java实现单链表
- 单链表java语言实现
- 单链表之Java实现
- java单链表实现
- 单链表操作java实现
- 单链表---java实现
- Java实现单链表
- Java实现单链表
- java语言实现单链表
- 单链表 java实现
- 用java实现单链表
- Java 实现单链表反序
- 链表
- Lucene查询方式总结
- 体系结构之设计模式在设计原则中的应用
- 日期和日期相减
- 解决“要运行Visual Studio 2005 sp1,建议使用管理员权限”的问题
- java实现单链表
- HDU 4405 Aeroplane chess (概率DP)
- OC学习笔记
- 加载Drawable图片时出现的oom问题
- Struts2中 Convention插件的使用
- 谓词NSPredicate
- Thinkphp自动验证
- 第一个只看思路一气呵成的结果
- Redis设计与实现(一~五整合版)