java实现简单链表
2017-07-17 20:53
295 查看
本链表实现的基本的增删该查功能,
package org.cn.test;
public Node(int data){
public void display(){
以上为基本的节点vo类,接下来是正式链表的创建:
package org.cn.test;
注意在删除查询的时候要查询链表是否有内容,删除索引不要超过链表的长度等等。
以下为测试类:
package org.cn.test;
欢迎来信一起探讨,谢谢。
package org.cn.test;
public class Node {
private int data;
public Node next;
public Node(){
}
public Node(int data){
this.data=data;
}
public void display(){
System.out.println("data==>"+this.data);
}
public int getData(){
return this.data;
}
public void setDate(int data){
this.data=data;
}
}
以上为基本的节点vo类,接下来是正式链表的创建:package org.cn.test;
public class MyLink {
public Node first;
//链表的头节点
public Node last;
//链表的最后一个节点
private int position=0;
public MyLink(){
this.first=null;
this.last=null;
}
public void addNode(int data){//添加节点
Node node=new Node(data);
node.next=null;
if(first==null || last==null){
first=new Node();
last=node;
first.next=last;
}
last.next=node;
last=node;
}
public int getLinkLength(Node node){//获得链表的长度
int len=0;
Node temp=first;
while((temp=temp.next)!=null){
len++;
}
return len;
}
public Node findNodeByIndex(int index){//根据索引查找节点
Node temp=first;
int len=this.getLinkLength(temp);
if(index>len){
System.out.println("要查找的下标超过了链表的长度");
return null;
}
while(position!=index){
position++;
temp=temp.next;
}
return temp;
}
public Node findNodeByDate(int data){//根据内容值查找结点
Node temp=first;
while(temp.getData()!=data){
temp=temp.next;
if(temp==null){
break;
}
}
return temp;
}
public boolean isContainData(int data){//查询链表是否包含指定的内容
boolean flag=false;
Node node=first;
while(node!=null){
if(node.getData()==data && (Integer)node.getData()!=null){
flag=true;
break;
}
node=node.next;
}
return flag;
}
public void deleteNode(int data){//删除节点
Node previous=null;
Node current=first;
boolean flag=this.isContainData(data);
if(!flag){
System.out.println("要删除的内容不存在");
return;
}
while(current.getData()!=data){
previous=current;
current=current.next;
if(current==null){
break;
}
}
previous.next=current.next;
current=null;
}
public void printNode(){//遍历链表
Node node=first;
while(node.next!=null){
node.display();
node=node.next;
}
node.display();
}
public void updateNode(int index,int data){//根据索引更新链表
Node node=first;
while(position!=index){
node=node.next;
position++;
}
node.setDate(data);
}
}
注意在删除查询的时候要查询链表是否有内容,删除索引不要超过链表的长度等等。以下为测试类:
package org.cn.test;
public class MyLinkTest{
public static void main(String args[]){
MyLink link=new MyLink();
link.addNode(5);
link.addNode(6);
link.addNode(7);
link.addNode(8);
link.addNode(9);
link.addNode(10);
link.addNode(13);
//link.updateNode(2, 22);
//link.printNode();
Node node=link.findNodeByIndex(10);
int len=link.getLinkLength(link.first);
System.out.println("len=="+len);
if(node!=null){
node.display();
}
link.deleteNode(6);
link.printNode();
}
}
欢迎来信一起探讨,谢谢。
相关文章推荐
- [记录]Java---实现简单的链表
- JAVA链表简单实现
- Java链表的简单实现
- 使用java实现的超简单的单向链表 头插法
- java中使用数组和链表简单实现SJBMap
- java实现链表简单示例
- java实现简单的链表增加,删除,显示
- Java数据结构----栈(Stack)源码分析和用链表简单实现
- java实现简单链表(int类型)增删查
- [算法]Java 实现 简单MyNode类型 无序链表 递归 添加 删除 遍历
- Java实现简单的链表(钢铎的烽火)
- Java数据结构之简单链表的定义与实现方法示例
- java单向链表基本操作简单实现
- [数据结构]java实现的简单链表的 头/尾插法
- java实现简单的单链表结构
- 基于Java关于链表的简单实现
- Java实现简单链表
- [java数据结构]--java双向链表LinkedList的简单实现
- 单向链表的java简单实现
- JAVA实现最简单的双向链表、队列与栈(内部使用链表形式存储)