永恒的码流

万物皆流,无物常驻

0%

数据结构和算法-概览

简介

数据结构

数据结构的存储方式只有两种:数组(顺序存储)和链表(链式存储),其他的都可以用这两者来实现,比如队列、栈、图、散列表、树等。

数据结构的遍历和访问:线性方式即迭代,非线性方式即递归(或队列栈加迭代)。

算法

核心在于穷举,然后剪枝。剪枝可利用记录表。

简单示例-翻转链表

给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。

迭代

1
2
3
4
5
6
7
8
9
10
11
public ListNode reverseList(ListNode head) {
ListNode cur = head;
ListNode pre = null;
while(cur != null) {
ListNode next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}

递归

1
2
3
4
5
6
7
8
9
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode newHead = reverseList(head.next);
head.next.next = head;
head.next = null;
return newHead;
}

参考