题解 | #输出单向链表中倒数第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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务