Pythonの指定された位置の前にリンクリストに新しい要素を挿入するプログラム
要素のリストがあるとします。これらの要素は、単一リンクリストに格納されます。値posと値valもあります。リンクリストのインデックス位置の前にvalを挿入する必要があります。
したがって、入力がnums =[1,5,3,6,8] pos =3 val =7のような場合、出力は[1,5,3,7,6,8]
になります。これを解決するには、次の手順に従います-
-
new:=valと同じ値でリンクリストノードを作成します
-
posが0と同じ場合、
-
次の新しい:=list_head
-
新規返品
-
-
temp:=list_head
-
tempがnullでなく、posが1と同じではない場合、do
-
temp:=次のtemp
-
pos:=pos-1
-
-
次の新しい:=次の臨時雇用者
-
next of temp:=new
-
list_headを返す
例
理解を深めるために、次の実装を見てみましょう
class ListNode:
def __init__(self, data, next = None):
self.val = data
self.next = next
def make_list(elements):
head = ListNode(elements[0])
for element in elements[1:]:
ptr = head
while ptr.next:
ptr = ptr.next
ptr.next = ListNode(element)
return head
def print_list(head):
ptr = head
print('[', end = "")
while ptr:
print(ptr.val, end = ", ")
ptr = ptr.next
print(']')
def solve(list_head, pos, val):
new = ListNode(val)
if pos == 0:
new.next = list_head
return new
temp = list_head
while temp and pos != 1:
temp = temp.next
pos -= 1
next = temp.next
temp.next = new
return list_head
nums = [1,5,3,6,8]
pos = 3
val = 7
list_head = make_list(nums)
list_head = solve(list_head, pos, val)
print_list(list_head) 入力
[1,5,3,6,8], 3, 7
出力
[1, 5, 3, 7, 6, 8, ]
-
Pythonで単一リンクリストの中間ノードを見つけるプログラム
単一リンクリストノードがあるとすると、中間ノードの値を見つける必要があります。そして、2つの中間ノードがある場合、2番目のノードを返します。これをシングルパスで解決する必要があります。 したがって、入力が[5,9,6,4,8,2,1,4,5,2]の場合、出力は2になります。 これを解決するために、次の手順に従います- p:=ノード d:=0、l:=0 ノードがnullでない場合は、実行してください dが2と同じでない場合、 node:=ノードの次 l:=l + 1、d:=d + 1 それ以外の場合 p:=pの次、d:=0
-
ソートされたリストに要素を挿入するPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、ソートされた順序を変更せずにリストに要素を挿入する必要があります 以下で説明するように、2つのアプローチがあります- アプローチ1:強引な方法 例 def insert(list_, n): # search for i in range(len(list_)): if list_[i] > n: index = i