java实现简单链表
来源:互联网 发布:mac 未能存储文稿 编辑:程序博客网 时间:2024/05/22 14:59
本链表实现的基本的增删该查功能,
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();
}
}
欢迎来信一起探讨,谢谢。
阅读全文
0 0
- java实现简单链表
- Java实现简单链表
- java简单实现链表
- java简单链表实现
- java实现简单链表
- (25)Java实现简单的链表
- 单向链表的java简单实现
- [记录]Java---实现简单的链表
- java实现链表简单示例
- Java简单实现链表增删排
- Java链表的简单实现
- Java链表的简单实现
- java的双向链表简单实现
- Java顺序表简单实现
- [java数据结构]--java双向链表LinkedList的简单实现
- java模拟链表和栈以及简单实现
- Java数据结构之简单的链表的实现
- Java -- 栈、队列等数据结构的简单链表实现
- ContentProvider
- 09读书笔记之提升ListView的运行效率
- 七月的无奈
- 记忆化搜索:POJ1088-滑雪(经典的记忆化搜索)
- git reset简介
- java实现简单链表
- linux-bash 归档数据文件
- 重新装修了博客
- POJ 1466 Girls and Boys(二分图最大独立集)
- python控制流-2017-7-18
- hdu 3440 House Man (去绝对值构图差分约束)
- 使用Endpoint(端点)类发布webservice
- 第3部分 装载与动态链接---(6)可执行文件的装载与进程
- 用matlab怎么画图,比如y =exp(x^2)?