# class Node: # def __init__(self,data): # # 要存的数据 # self.data = data # # 指向下一个节点的指针 # self.next = None # # class LinkedList: # def __init__(self): # # 链表长度 # self.size = 0 # # 链表的头部 # self.head = None # # 链表的尾部 # self.last = None # # index为取链表的第几节点 # # def get(self,index): # if index<0 or index>self.size: # raise Exception('超出链表节点范围') # # 这里声明一个变量p为当前指针位置,如果链表不为空, # # 则self.head 为第一个节点位置,它是一个实例化的Node, # # 它的next属性也一定存过下个节点是谁, # # 依次找下去,找到对应节点位置,返回的是对应index的节点,也是个实例化的Node # p = self.head # for i in range(index): # p = p.next # return p # # def insert(self,data,index): # #print(self.size,index) # if index < 0 or index > self.size: # raise Exception('超出链表节点范围') # #声明一个节点 # node = Node(data) # #长度为零则为空链表 # if self.size == 0: # self.head = node # self.last = node # elif index==0: # # 之前的头部为新节点的指向 # node.next = self.head # # 新节点变为头部节点 # self.head = node # elif self.size == index: # # 最后一个节点指向新节点 # self.last.next = node # # 新节点记录为最后一个节点 # self.last = node # else: # # 定位插入位置的上一个节点 # prev_node = self.get(index-1) # # 插入的节点的指向改为上一个节点的指向 # node.next = prev_node.next # # 上个节点的指向改为新插入的节点 # prev_node.next = node # self.size+=1 # # def output(self): # p = self.head # while p is not None: # print(p.data) # p = p.next # # linkedList = LinkedList() # # # linkedList.insert(4,4) # # # linkedList.insert(6,0) #在空链表中加入一个数 # linkedList.insert(7,0) #在链表前加入一个数 # # linkedList.insert(9,2)#在链表尾加入一个数 # linkedList.insert(5,3)#在链表尾加入一个数 # linkedList.insert(6,2)#在链表中插入一个数 # print(linkedList.get(3)) # linkedList.output()