题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
#创建节点Node类 class Node(object): #定义节点 def init(self,data,) #将data值赋给节点data: self.data = data #节点中下一个地址默然为None self.next = None
#创建链表类 class LinkList(object): #定义链表 def init(self, None): #定义head,head指向链表头节点 self.__head = None
#链表方法 判断链表是否为空,
def isempty(self): #判断链表是否为空,只需判断链表head有没有指向,是不是默认?hend==None说明还没有指向,还是个空的链表 return self.__head==None
#链表方法 链表尾端添加元素
def append(self,item): #先将元素转为结点 node = Node(item) #判断链表是否是空? if self.isempty(): #如果是空链表,则将这个结点当作头结点,head指向这个结点位置 self.__head = node else: #如果不是空链表,则需要循环往后找到链表尾部(self.next==None) #头结点存储的位置是下一个结点的位置,则需先给头结点的位置标识出来。 cur = self.__head
#头结点位置的位置指向不为None,则不是最后一位,循环往后 while cur.next != None: cur = cur.next #找到链表尾部,尾部的next链接node元素 cur.next = node
#链表方法,找到指定位置,并打印数据域元素
def pos_search(self,long,pos): #头结点的空间位置self.head cur = self.__head #顺序排列的时候下表位置,范围是0~long cur_c = 0 #当指定值为非法时,返回异常指针“0” if pos <= 0: print("0") return False else: #当数据正常时,看根据cur的变动,下表位置逐渐加1, while cur != None: cur_c += 1 #判断当下表位置与pos是否对应,打对应的元素值 if cur_c == (long-pos+1): print(cur.data) return True else: cur = cur.next return False if name == "main": while True: try: long = int(input()) string = input() pos = int(input()) item = string.split(" ") ll = LinkList() for i in range(long): n = item[i] ll.append(n) ll.pos_search(long, pos)
except: break
class Node(object):
#定义节点
def __init__(self,data,)
#将data值赋给节点data:
self.data = data
#节点中下一个地址默然为None
self.next = None
#创建链表类
class LinkList(object):
#定义链表
def __init__(self, None):
#定义head,head指向链表头节点
self.__head = None
#链表方法 判断链表是否为空,
def isempty(self):
#判断链表是否为空,只需判断链表head有没有指向,是不是默认?hend==None说明还没有指向,还是个空的链表
return self.__head==None
#链表方法 链表尾端添加元素
def append(self,item):
#先将元素转为结点
node = Node(item)
#判断链表是否是空?
if self.isempty():
#如果是空链表,则将这个结点当作头结点,head指向这个结点位置
self.__head = node
else:
#如果不是空链表,则需要循环往后找到链表尾部(self.next==None)
#头结点存储的位置是下一个结点的位置,则需先给头结点的位置标识出来。 cur = self.__head
#头结点位置的位置指向不为None,则不是最后一位,循环往后
while cur.next != None:
cur = cur.next
#找到链表尾部,尾部的next链接node元素
cur.next = node
#链表方法,找到指定位置,并打印数据域元素
def pos_search(self,long,pos):
#头结点的空间位置self.head
cur = self.__head
#顺序排列的时候下表位置,范围是0~long
cur_c = 0
#当指定值为非法时,返回异常指针“0”
if pos <= 0:
print("0")
return False
else:
#当数据正常时,看根据cur的变动,下表位置逐渐加1,
while cur != None:
cur_c += 1
#判断当下表位置与pos是否对应,打对应的元素值
if cur_c == (long-pos+1):
print(cur.data)
return True
else:
cur = cur.next
return False
if __name__ == "__main__":
while True:
try:
long = int(input())
string = input()
pos = int(input())
item = string.split(" ")
ll = LinkList()
for i in range(long):
n = item[i]
ll.append(n)
ll.pos_search(long, pos)
except:
break