کلاس Linke dlist چیست
کلاس Linke dlist چیست
چند مشکل ظریف در روشی که براي پیادهسازي لیستها داشتیم، وجود دارد. در نقض علـت و معلول، ما در ابتدا یک روش پیادهسازي جایگزین را پیشنهاد میکنیم و سپس توضیح میدهیم که این روش چه مشکلاتی را حل میکند. نخست یک کلاس جدید بهنام LinkedList میسازیم. مشخصه هاي این کـلاس یـک عـدد صحیح که شامل طول لیست است و یک آدرس به گره اول میباشد. اشـیاء LinkedList بـهعنـوان ابزارهایی براي دستکاري لیستهایی از اشیاء Node بهکار میروند:
class LinkedList:
def __init__(self):
self.length = 0
self.head = None
یک نکتۀ جالب دربارة کلاس LinkedList این است که این کلاس یک محل طبیعی بـراي قرار دادن توابع بستهسازي نظیر printBackwardNicely فراهم میکند که ما میتوانیم متـدي از کلاس LinkedList بسازیم:
class LinkedList:
…
def printBackward(self):
print “[“,
if self.head != None:
self.head.printBackward()
print “]”,
class Node:
…
def printBackward(self):
if self.next != None:
tail = self.next
tail.printBackward()
print self.cargo,
تنها براي پیچیدهتر کردن ماجرا، ما printBackwardNicely را تغییر نام دادیم. حال دو متد بهنام printBackward وجود دارد؛ یکی در کلاس Node) کمـک کننـده) و یکـی در کـلاس LinkedList) بسته ساز). وقتی بستهساز، printBackward.head.self ، را احضار میکند، کمککننده را احضار کرده است، زیرا head.self یک شیء Node است.
مزیت دیگر کلاس LinkedList آن است که جمـع و حـذف کـردن اولـین عضـو لیسـت را آسانتر میسازد. براي مثال addFirst متدي براي LinkedListها است. این متد یک عضـو بـار را میگیرد و در آغاز لیست قرار میدهد:
class LinkedList:
…
def addFirst(self, cargo):
node = Node(cargo)
node.next = self.head
self.head = node
self.length = self.length + 1
به طور معمول، شما باید چنین کدي را بررسی کنید تا ببینید آیا میتواند در حالـتهـاي ویـژه هم کار کند. براي نمونه ، اگر لیست در آغاز تهی باشد چه اتفاقی میافتد؟
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید