单链表:
Q:单链表的反转
思路:1. 先定义一个新的头节点 reverseHead = new Node();
2. 从头到尾遍历原链表,每遍历一个节点,将其取出,并放在链表的最前端
ㅤ ㅤ ㅤ
3. 原来链表的Head.next=reverseHead.next
ㅤ
示例代码:
while里的操作:
next 存到2,然后把cur这个点的尾指针指向newHead的最前面,然后把newHead的头节点尾指针指向cur,
然后cur后移一个。
Q : 求单链表中有效的节点个数(带头结点的)
思路: 循环,如果节点的下一个不为空,则节点存在,节点向后移。直至某个节点的下一个为空,返回有效节点个数。
Q: 查找单链表中的倒数第k个节点
思路:把链表从头到尾遍历,得到链表总长度(size),然后从第一个遍历到 size-k 个
Q: 从尾到头打印单链表
思路: 利用栈结构,将各个节点压入到栈(先进后出)中,然后将其取出,即实现从尾到头打印
Q: 约瑟夫问题、丢手帕问题(单项环形列表):
思路: