您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
javase第二季学习笔记-数据结构之链表
发布时间:2017-07-10 14:37:49编辑:雪饮阅读()
链表是一种长见的数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点存储下一个节点的指针。
链表涉及到递归算法。
递归算法是一种直接或间接调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁且易于理解。
递归算法示例:
public class NewKeywordDemo
{
public static void main(String[] args){
int result=factorial(5);
System.out.println("递归结果:"+result);
}
//递归算法实现阶乘
public static int factorial(int num){
if(num==1){return 1;}
return num*factorial(num-1);
}
}
注意:递归次数过多可能导致栈内存溢出
链表示例:
public class NewKeywordDemo
{
public static void main(String[] args){
NodeManager nm=new NodeManager();
nm.addNode("节点1");
nm.addNode("节点2");
nm.addNode("节点3");
nm.addNode("节点4");
nm.addNode("节点5");
nm.printNode();
nm.delNode("节点3");
nm.printNode();
}
}
//链表节点管理
class NodeManager
{
//添加、删除、输出节点全部用上了递归算法
//根节点
private Node root;
//添加节点
public void addNode(String name){
if(root==null){
root=new Node(name);
}
else{
root.add(name);
}
}
//删除节点
public void delNode(String name){
if(root!=null){
if(root.name.equals(name)){
root=root.next;
}
else{root.del(name);}
}
}
//输出所有节点
public void printNode(){
if(root!=null){
System.out.println(root.name);
root.print();
System.out.println();
}
}
//定义一个节点内部类
class Node
{
private String name;//节点名称
private Node next;//表示下一个节点对象
public Node(String name){
this.name=name;
}
//添加节点
public void add(String name){
if(this.next==null){this.next=new Node(name);}
else{this.next.add(name);}
}
//删除节点
public void del(String name){
if(this.next!=null){
if(this.next.name.equals(name)){this.next=this.next.next;}
else{this.next.del(name);}
}
}
//输出所有节点
public void print(){
if(this.next!=null){
System.out.print("-->"+this.next.name);
this.next.print();
}
}
}
}
关键字词:javase,数据结构之链表