数据结构之链表和递归

一、 链表数据结构
1、链表是一种常见的基础数据结构,是一种线性表,但是并不会按照线性的顺序存储数据,而是在每一个节点里存储了下一个节点的指针,
二、 算法
1、递归算法是一种直接或者间接调用自身算法的过程,
链表:
/**
链表数据结构
*/

class LinkListDemo
{
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.addNode(“节点6”);
nm.printNode();
nm.delNode(“节点4”);
System.out.println(“删除节点4后:”);
nm.printNode();
nm.delNode(“节点3”);
System.out.println(“删除节点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.print(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();
        }
    }
}

}
递归:
class RecursionDemo
{
public static void main(String[] args)
{
//阶乘
System.out.println(factorial(5));
//递归调用
System.out.println(factorial2(5));
}
//递归算法(调用)
public static int factorial2(int num)
{
if(num==1)
{
return 1;
}
return num*factorial2(num-1);
}
//阶乘
public static int factorial(int num)
{
int sum = num;
int i = sum - 1;
do
{
sum*=i;
i–;
}
while (i>1);
return sum;
}
}

你可能感兴趣的:(数据结构之链表和递归)