Java实现的链表,提供增,删,改,查方法。
来源:互联网 发布:量子统计 淘宝 编辑:程序博客网 时间:2024/06/05 08:30
首先创建一个结点类,不用说看代码:
public class Node {
private Node previous;
private Object object;
private Node next;
public Node(){
}
public Node(Node previous, Object object, Node next) {
super();
this.previous = previous;
this.object = object;
this.next = next;
}
public Node getPrevious() {
return previous;
}
public void setPrevious(Node previous) {
this.previous = previous;
}
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
之后创建链表
增加结点的方法:
public void add(Object obj){
if(null==first){
Node n=new Node();
n.setPrevious(null);
n.setObject(obj);
n.setNext(null);
first=n;
last=n;
}else {
Node node=new Node();
node.setPrevious(last);
node.setObject(obj);
node.setNext(null);
last.setNext(node);
last=node;
}
size++;
}
封装结点查找:
public Node node(int index) {
Node temp =null;
if(first!=null){
temp=first;
for(int i=0;i<index;i++){
temp=temp.getNext();
}
}
return temp;
}
删除结点:
public void remove(int index) {
Node temp=node(index);
if(temp!=null){
Node up=temp.getPrevious();
Node down=temp.getNext();
up.setNext(down);
down.setPrevious(up);
}
size--;
}
查询结点:
//判断是否越界
private void rangeChect(int index) {
if(index<0||index>=size){
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public Object get(int index) {
//越界处理
rangeChect(index);
Node temp=node(index);
if (temp!=null) {
return temp.getObject();
}
return null;
}
插入结点:
public void add(int index,Object obj) {
Node temp=node(index);
Node newNode=new Node();
newNode.setObject(obj);
if(temp!=null){
Node up=temp.getPrevious();
up.setNext(newNode);
newNode.setPrevious(up);
newNode.setNext(temp);
temp.setPrevious(newNode);
size++;
}
}
最后附上它的全部代码:
package cn.xzn.collection;
public class Node {
private Node previous;
private Object object;
private Node next;
public Node(){
}
public Node(Node previous, Object object, Node next) {
super();
this.previous = previous;
this.object = object;
this.next = next;
}
public Node getPrevious() {
return previous;
}
public void setPrevious(Node previous) {
this.previous = previous;
}
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
package cn.xzn.collection;
public class setLinklist {
private Node first;
private Node last;
private int size;
public void add(Object obj){
if(null==first){
Node n=new Node();
n.setPrevious(null);
n.setObject(obj);
n.setNext(null);
first=n;
last=n;
}else {
Node node=new Node();
node.setPrevious(last);
node.setObject(obj);
node.setNext(null);
last.setNext(node);
last=node;
}
size++;
}
public int size(){
return size;
}
// 检查是否越界
private void rangeChect(int index) {
if(index<0||index>=size){
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public Object get(int index) {
//越界处理
rangeChect(index);
Node temp=node(index);
if (temp!=null) {
return temp.getObject();
}
return null;
}
public Node node(int index) {
Node temp =null;
if(first!=null){
temp=first;
for(int i=0;i<index;i++){
temp=temp.getNext();
}
}
return temp;
}
public void remove(int index) {
Node temp=node(index);
if(temp!=null){
Node up=temp.getPrevious();
Node down=temp.getNext();
up.setNext(down);
down.setPrevious(up);
}
size--;
}
public void add(int index,Object obj) {
Node temp=node(index);
Node newNode=new Node();
newNode.setObject(obj);
if(temp!=null){
Node up=temp.getPrevious();
up.setNext(newNode);
newNode.setPrevious(up);
newNode.setNext(temp);
temp.setPrevious(newNode);
size++;
}
}
public static void main(String[] args){
setLinklist linklist =new setLinklist();
linklist.add("aaa");
linklist.add("bbb");
linklist.add("ccc");
//linklist.remove(1);
linklist.add(1,"BBBBB");
System.out.println(linklist.get(1));
}
}
- Java实现的链表,提供增,删,改,查方法。
- sqlitedabase提供的CRUD(增、删、改、查)方法
- java实现单向链表的增、删、改、查
- 链表的增,删,改,查实现
- 二叉树的增、删、改、查(java实现)
- 用Java语言实现链表的增删改查
- java实现链表,增删改查
- java xml 的增、删、改、查
- JSP实现数据库的增、删、改、查、分页查
- 循环链表实现增、删、改、查等功能
- Hibernate.gethibernatetemplate 实现增、删、改、查 方法
- java实现cassandra的增删改查
- java实现cassandra的增删改查
- JAVA实现单链表的增删改查
- java实现单链表的增删改查
- java实现数组的增删改查
- c语言实现链表的创建、增、删、改、查
- 在Java中实现增、删、改、查功能?
- 814/ A. An abandoned sentiment from past
- 56. Merge Intervals
- 进程与线程
- 【python 图像识别】图像识别从菜鸟走向大神系列1
- Vue2生命周期
- Java实现的链表,提供增,删,改,查方法。
- canvas实现放大镜查看图片
- Pixhawk原生PX4固件中的坑(2017.6.8TREE上的版本)
- Qt:自定义窗口之窗口缩放
- OkHttp使用详解
- 关于Js中函数传参是引用还是传值
- CSS-!important提升权重用法
- Linux下创建DNS服务器
- An internal error occurred during