啥东西都应该有套路,玩游戏有玩游戏的套路, 升级,下副本,拿装备,下更高级副本,拿更高级装备,如此循环
编程也有编程的套路, 如果你还感觉迷茫或者还在考虑学前端还是后端或者 选什么语言?
一句话 前端&后端&任何语言 这都叫编程 都叫程序员, 直接 升级下副本吧,至少先玩上一个 你才能知道 这游戏怎么样,然后在决定要在这个游戏中 怎么玩~
链表是啥自行百度吧
大致结构 就是
创建链表就不说了吧.... 循环就好了
那么反转链表是啥?
当然就是将链表反过来咯
1->2->3->4->5
反转:
5->4->3->2->1
怎么操作呢?
说套路之前先说一条定理:
看书记不住的原因 只有一点! 那是因为你没有理解其意义
有的人看两遍就能理解, 有的人 套用一下就能理解, 而有的人 需要大量的重复的写的过程中突然bing!的一下就理解了
那反转单项链表有啥套路呢?
新建一个链表 = 原链表用一个变量保存链表的next 节点(保留 原链表的后续节点 理解为count - 当前)对新链表的next节点进行重新赋值用另一个变量保存当前节点移动当前链表位置 重复 1 2 3 4 操作class Node {AnyObject *data;Node *next ;}// 不要在意用什么语言 大意能看懂就好func reverseLink(link:Node) -> Node { // 1. var tempHead = link var next:Node = nil var pre:Node = nil while (tempHead) { // 2. next = tempHead.next // 3. 这里需要区分 原链表的第一个元素反转后 next 节点应该为 null tempHead.next = pre // 4. pre = tempHead // 5. tempHead = next // 6. 执行while循环 直到 next = nil } // 循环结束当前tempHead = nil, 所以 return的是 tempHead=nil操作之前的那一个节点, 第四步 return pre}反转双向链表链表结构中加了一个last 节点
class Node {AnyObject *data;Node *next;Node *last;}// 不要在意用什么语言 大意能看懂就好func reverseLink(link:Node) -> Node { // 1. var tempHead = link var next:Node = nil var pre:Node = nil while (tempHead) { // 2. next = tempHead.next // 3. 这里需要区分 原链表的第一个元素反转后 next 节点应该为 null tempHead.next = pre // 头节点的设置 tempHead.last = next // 4. pre = tempHead // 5. tempHead = next // 6. 执行while循环 直到 next = nil } // 循环结束当前tempHead = nil, 所以 return的是 tempHead=nil操作之前的那一个节点, 第四步 return pre}