java链表和递归算法学习
来源:互联网 发布:电路接线图软件 编辑:程序博客网 时间:2024/06/07 05:25
数据结结构之链表
按线性的顺序存储数据,而是在每一个节点里存下一个节点的指针(Pointer)
链表与数组区别
链表不适合遍历,但是适合灵活的(插入,删除等)操作
递归算法:直接或间接调用自身的算法
注:递归一定要有出口,递归过多会造成栈内存溢出(当N很大时)
public class test_13{public static void main(String[] args){System.out.println(jieceng(5));System.out.println(jieceng_dg(5));}//求阶层public static int jieceng(int num){int sum = num;int i = num -1; do { sum = sum*i; i--; }while(i>1); return sum;}// 递归算法 ,节俭了代码// 递归一定要有出口,递归过多会造成栈内存溢出public static int jieceng_dg(int num){if (num==1)return 1;return num*jieceng_dg(num-1);}}
完整链表代码:
// 链表数据结构// 适合用于频繁进行添加、插入、删除操作public class test_13_lianbiao{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"); nm.printNode();}}//链表的节点管理类class NodeManager{private Node head;//头节点(根节点)public void addNode(String name){if (head==null){head = new Node(name);}else{head.add(name);}}public void delNode(String name){if (head.getName().equals(name)){head=head.next;}else{head.delet(name);}}public void printNode(){if (head!=null){System.out.print(head.getName()+"->");head.print();System.out.println();}}// 表示每个节点对象class Node {private String name;private Node next;// 表示当前结点的下一个节点public String getName(){return name;}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 delet(String name)//删除节点{if (this.next!=null){if (this.next.name.equals(name)){this.next=this.next.next;}else{this.next.delet(name);}}}public void print()// 打印所有节点{if (this.next!=null){System.out.print(this.next.getName()+"->");this.next.print();}}}}
跑出结果:
0 0
- java链表和递归算法学习
- java算法:折半查找(递归算法和非递归算法)
- 有序链表合并的递归和非递归算法
- 链表翻转的递归和非递归算法
- 有序链表合并的递归和非递归算法
- 链表反转的递归和非递归算法
- 算法学习之循环和递归
- 算法学习之递归和堆栈
- 数据结构和算法学习(6)-递归
- java中递归算法和汉诺塔
- Java 二分查找算法(递归和非递归)
- java-实现链表反转-递归和非递归实现
- java算法:递归算法
- java算法学习笔记--递归算法/分而治之思想
- 学习笔记:Java数组和递归。
- 递归算法学习
- C#算法学习-->递归
- 递归 - 算法学习
- 无敌版动画
- GCD的线程间通信
- C++:内联函数、重载函数、递归、补码
- viewpager 添加Fragment 每次滑动调接口 获取数据
- 使用Genymotion出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决方法
- java链表和递归算法学习
- HTML+CSS基础(七):CSS选择器
- 8、重写历史记录
- TableAu TDE文件创建与上传
- iOS 打包流程
- 安装并解决最近cocopods不能用的问题
- nyoj 716 River Crossing 第六届河南省程序设计大赛
- Android Studio问题合集
- Linux rpm 命令参数使用