左程云著算法与数据结构题目最优解笔记-链表
来源:互联网 发布:数据采集审核报送制度 编辑:程序博客网 时间:2024/05/18 20:12
链表
链表是面试时被提及最频繁的数据结构。链表就是通过指针将一个个节点连接起来。链表是非连续的动态内存空间,链表的查找比数组慢,但是添加和删除比数组快。
链表声明
public class ListNode { int val; ListNode next; public ListNode(int val) { this.val = val; this.next = null; }}
链表的添加
public void insertList(ListNode head, int val) { ListNode tempNode = new ListNode(val); if (head == null) { head = tempNode; }else { ListNode p = head; while (p.next != null) { p = p.next; } p.next = tempNode; }}
链表的删除
public void deleteListNode(ListNode head, int val) { if (head ==null) return;//为了鲁棒性 if (head.val == val) {//头节点为要删除节点 head = head.next; } else { ListNode p = head; //删除节点需要知道前一个节点,所以判断p.next.val是不是和目标相等 while (p.next !=null && p.next.val != val) { p = p.next; } if (p.next !=null) { p.next = p.next.next;//删除节点 } }}
从尾到头打印链表
方法1:使用栈结构
public void printList1(ListNode head) { if (head == null) return; Stack<ListNode> stack = new Stack<ListNode>(); ListNode p = head; while (p != null) { stack.push(p); p = p.next; } while (!stack.isEmpty()) { p = stack.pop(); System.out.print(p.val+" "); }}
方法2:递归
public void printList2 (ListNode head) { if (head != null) { if (head.next != null) { printList2(head.next); } System.out.print(head.val+" "); }}
注:递归的过程相当于栈。
反转单链表
public ListNode reverseList (ListNode head) { ListNode pre = null; ListNode next; while (head != null) { next = head.next; head.next = pre; pre = head; head = next; } return pre;}
学习数据结构与算法的记录和整理,如有错误或意见请帮忙指出,以后会持续更新。。。。
参考书籍:
《程序员代码面试指南:IT名企算法与数据结构题目最优解》—左程云
《剑指Offer》 —何海涛
0 0
- 左程云著算法与数据结构题目最优解笔记-链表
- 左程云著算法与数据结构题目最优解笔记-反转单双链表
- 左程云著算法与数据结构题目最优解笔记-位运算
- 左程云著算法与数据结构题目最优解笔记-删除无序链表中重复的元素
- 程序员代码面试指南 IT名企算法与数据结构题目最优解 ,左程云著
- 《程序员代码面试指南 IT名企算法与数据结构题目最优解》左程云著 pdf
- 程序员代码面试指南:IT名企算法与数据结构题目最优解(题目)
- 程序员代码面试指南 IT名企算法与数据结构题目最优解.pdf
- 程序员代码面试指南:IT名企算法与数据结构题目最优解——互动出版网
- 程序员代码面试指南:IT名企算法与数据结构题目最优解-字符串问题:C/C++语言实现
- 数据结构与算法题目
- 数据结构与算法题目汇总
- PAT数据结构与算法题目
- 数据结构笔记-----数据结构与算法
- 数据结构与算法笔记
- 算法与数据结构笔记
- <数据结构与算法>最优二叉树——霍夫曼树
- 《数据结构与算法分析》动态规划--矩阵乘法最优顺序、最优二叉查找树详解
- Class Throwable
- MyBatis 3 电子书
- POJ1330(LCA离线和在线)
- Java字符串类
- [Lpp] HTTP协议状态码详解(HTTP Status Code)
- 左程云著算法与数据结构题目最优解笔记-链表
- Centos修改镜像为国内的阿里云源或者163源等国内源
- $(...).modal is not a function
- leetcode 220. Contains Duplicate III
- ZOJ2481 Unique Ascending Array
- VUA-10375 Choose and divide
- CentOS7配置免密码登陆
- Spring中任务调度cronExpression配置说明
- xUtils3