51 輸出單向鍊錶中倒數第k個結點

2021-09-09 07:22:37 字數 2384 閱讀 1938

題目描述

輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點,鍊錶的倒數第1個結點為鍊錶的尾指標。

鍊錶結點定義如下:

struct listnode

int m_nkey;

listnode* m_pnext;

};詳細描述:

介面說明

原型:listnode* findkthtotail(listnode* plisthead, unsignedint k);

輸入引數:

listnode* plisthead 單向鍊錶

unsigned int k 倒數第k個結點

輸出引數(指標指向的記憶體區域保證有效):

無返回值:

正常返回倒數第k個結點指標,異常返回空指標

輸入描述:

輸入說明

1 輸入鍊錶結點個數

2 輸入鍊錶的值

3 輸入k的值

輸出描述:

輸出乙個整數

示例1輸入

81 2 3 4 5 6 7 84輸出

5

#直接列表實現

while true:

try:

n=int(input())

stringlist=[int(i) for i in input().split()]

index=int(input())

if index==0:

print(0)

else:

print(stringlist[-index])

except:

break

#鍊錶形式

class node():

def __init__(self,item):#節點初始條件有值

self.item=item

self.next=none

#建立鍊錶的類

class singlelink():

#初始化,給定鍊錶的頭部屬性

def __init__(self,node=none):

self.__head=node

def is_empty(self):

return self.__head==none #為none返回true,不為none,false

newnode=node(newitem)

if self.is_empty():#類之間的函式呼叫用self.func

self.__head = newnode

else:

currentnode=self.__head

while currentnode.next!=none:

currentnode=currentnode.next

currentnode.next = newnode

# #判斷鍊錶的長度

def length(self):

if self.is_empty():

return 0

else:

currentnode=self.__head #代表currentnode指向當前節點的游標與head指標指向同乙個節點

lengthcount=1#對比注釋部分另乙個方法,lengthcount=0

while currentnode.next!=none:

lengthcount+=1

currentnode=currentnode.next

return lengthcount

def show(self, position):

if (position < 0) or (position > self.length()):

return false

else:

currentnode = self.__head

positioncount = 0

while positioncount < position:

currentnode = currentnode.next

positioncount += 1

print(currentnode.item)

while true:

try:

if __name__ == "__main__":

link = singlelink()

n=int(input())

stringlist=[int(i) for i in input().split()]

for i in stringlist:

index=int(input())

if index==0:

print(0)

else:

link.show(n-index)

except:

break

輸出單向鍊錶中倒數第k個結點

描述 輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點,鍊錶的倒數第0個結點為鍊錶的尾指標。鍊錶結點定義如下 struct listnode 詳細描述 介面說明 原型 listnode findkthtotail listnode plisthead,unsignedint k 輸入引數 listnod...

python實現獲取單向鍊錶倒數第k個結點的值示例

初始化鍊錶的結點 class node def init self,itedqhejm self.item item self.next none 傳入頭結點,獲取整個鍊錶的長度 def length headnode if headnode none return none count 0 cur...

單向鍊錶中倒數第k個值

本文參考書籍 劍指offer 作者何海濤 01 題目輸入乙個單向鍊錶,輸出該鍊錶中倒數第k個結點。如乙個鍊錶中有6個結點,1,2,3,4,5,6 這個鍊錶的倒數第三個節點是值為4的結點。鍊錶結構如下 02 解題 解法1 獲取鍊錶的第k個值,如果可以知道鍊錶長度n,那麼可以知道從0開始第n k的值是要...