剑指offer15,16 — 链表概念&从尾到头打印链表
链表概念
- 链表长度可变。
- 单链表
-
循环链表:
-
双链表:
双链表可以很方便的找上一个结点的数据
题目
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList.
分析
链表每一个结点的结构:
class ListNode:
def __init__(self,x):
self.val=x
self.next=None
如何正着打印?
def printChain(node):
while node:
print(node.val)
node=node.next
if __name__=='__main__':
l1=ListNode(1)
l2=ListNode(2)
l3=ListNode(3)
l1.next=l2
l2.next=l3
l3.next=None
如何利用已给的ListNode反着打印?—
新建一个列表,逐个取出listNode的值插入进列表的头位置(即0位置)。具体见解。
解
class Solution:
def printListFromTaoToHead(self,listNode):
ret=[]
pTmp=listNode
while pTmp:
ret.insert(0,pTmp.val)
pTmp=pTmp.next
return ret