リンクリストの概念を理解しようとしています。私は私の質問についての情報を検索しましたが、私は私を助けてくれる回答は見つかりませんでした。 リンクリストがソートされているかどうかを確認する方法を知りたいですか? 明らかに、私たちは普通のリストのように単純な2行の関数を使うことはできません。私は私のリストがソートされている場合(list.sort()
を使用せずに)チェックしたい場合は、私はこのような機能を例えば を作成します:Python:リンクされたリストがソートされているかどうかを確認する方法
def is_sorted(l):
return all(a <= b for a, b in zip(l[:-1], l[1:]))
しかし、リンクリストのために、私は、リストの尾と頭値を比較する必要がありますか?どのように正確に動作するのですか?
Contruction私はリンクリストを作成するために使用します。
class Node :
def __init__(self, data):
self.data = data
self.next = None
self.prev = None
class LinkedList:
def __init__(self):
self.head = None
def add(self, data):
node = Node(data)
if self.head == None:
self.head = node
else:
node.next = self.head
node.next.prev = node
self.head = node
def search(self, k):
p = self.head
if p != None :
while p.next != None :
if (p.data == k) :
return p
p = p.next
if (p.data == k) :
return p
return None
def remove(self, p) :
tmp = p.prev
p.prev.next = p.next
p.prev = tmp
def __str__(self) :
s = ""
p = self.head
if p != None :
while p.next != None :
s += p.data
p = p.next
s += p.data
return s