赞
踩
设计链表的实现。您可以选择使用单链表或双链表。
单链表中的节点应该具有两个属性:
val 和 next。val 是当前节点的值,
next 是指向下一个节点的指针/引用。
如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。
假设链表中的所有节点都是 0-index 的
并实现以下方法
get(index)
addAtHead(val)
addAtTail(val)
addAtIndex(index,val)
deleteAtIndex(index)
class ListNode: def __init__(self, x): self.val = x self.next = None class MyLinkedList(object): def __init__(self): self.size = 0 self.head = ListNode(0) def get(self, index): if index < 0 or index >= self.size: return -1 cur = self.head for _ in range(index + 1): cur = cur.next return cur.val def addAtIndex(self, index, val): if index > self.size: return if index < 0: index = 0 self.size += 1 pred = self.head for _ in range(index): pred = pred.next toAddNode = ListNode(val) toAddNode.next = pred.next pred.next = toAddNode def addAtHead(self, val): self.addAtIndex(0, val) def addAtTail(self, val): self.addAtIndex(self.size, val) def deleteAtIndex(self, index): if index >= self.size or index < 0: return self.size -= 1 predDel = self.head for _ in range(index): predDel = predDel.next predDel.next = predDel.next.next
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。