Saeid Safaei Loader Logo Saeid Safaei Loader Animated
لطفا شکیبا باشید
0

سعیدصفایی سعیدصفایی

سعید صفایی
آشنایی با مفهوم Doubly Linked List

Doubly Linked List

لیست پیوندی دو طرفه نوعی از لیست پیوندی است که هر عنصر به دو عنصر قبلی و بعدی خود اشاره دارد.

Saeid Safaei Doubly Linked List

لیست پیوندی دو طرفه (Doubly Linked List) یکی از انواع ساختارهای داده‌ای است که در آن هر گره (Node) نه تنها به گره بعدی خود اشاره می‌کند، بلکه به گره قبلی نیز اشاره دارد. این ویژگی به برنامه‌نویسان این امکان را می‌دهد که بتوانند به راحتی به هر دو طرف لیست (یعنی به گره قبلی و بعدی) دسترسی پیدا کنند، که این امر عملکردهای خاصی مانند حذف گره‌ها یا پیمایش در لیست به جلو و عقب را تسهیل می‌کند.

ساختار لیست پیوندی دو طرفه

در لیست پیوندی دو طرفه، هر گره دارای دو بخش است:

  • داده: بخشی که داده مورد نظر ذخیره می‌شود (این داده می‌تواند یک عدد، رشته یا هر نوع داده‌ای باشد).
  • اشاره‌گرها: هر گره دارای دو اشاره‌گر است:
    • اشاره‌گر به گره بعدی: این اشاره‌گر به گره بعدی در لیست پیوندی اشاره می‌کند.
    • اشاره‌گر به گره قبلی: این اشاره‌گر به گره قبلی در لیست پیوندی اشاره می‌کند.

به این ترتیب، برخلاف لیست پیوندی تک‌طرفه که فقط به گره بعدی اشاره دارد، لیست پیوندی دو طرفه این امکان را می‌دهد که به راحتی از هر دو طرف لیست داده‌ها را دسترسی پیدا کرد.

مثال پیاده‌سازی لیست پیوندی دو طرفه در Python

در اینجا یک مثال ساده از نحوه پیاده‌سازی لیست پیوندی دو طرفه در زبان Python آورده شده است. در این پیاده‌سازی، هر گره دارای دو اشاره‌گر به گره قبلی و گره بعدی است:

 class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None class DoublyLinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:

self.head = new_node
else:

temp = self.head

while temp.next:


temp = temp.next

temp.next = new_node

new_node.prev = temp # اتصال به گره قبلی
def display(self):
temp = self.head
while temp:

print(temp.data, end=" <-> ")

temp = temp.next
print("None")
def display_reverse(self):
temp = self.head
if not temp:

return
while temp.next:

temp = temp.next # رسیدن به آخرین گره
while temp:

print(temp.data, end=" <-> ")

temp = temp.prev
print("None") # استفاده از لیست پیوندی دو طرفه dll = DoublyLinkedList() dll.append(10) dll.append(20) dll.append(30) dll.display()
# نمایش لیست از جلو به عقب: 10 <-> 20 <-> 30 <-> None dll.display_reverse() # نمایش لیست از عقب به جلو: 30 <-> 20 <-> 10 <-> None

در این مثال، ابتدا گره‌ها به لیست پیوندی دو طرفه اضافه می‌شوند و سپس با استفاده از دو متد display() و display_reverse() لیست از جلو و عقب نمایش داده می‌شود. در هنگام افزودن هر گره جدید، اشاره‌گر گره قبلی به‌روز می‌شود تا پیوند دو طرفه حفظ شود.

مزایای لیست پیوندی دو طرفه

  • دسترسی دو طرفه: به راحتی می‌توان به هر دو طرف لیست دسترسی داشت، چه به جلو و چه به عقب. این ویژگی برای انجام عملیات‌هایی مانند حذف یا جستجوی سریع در لیست مفید است.
  • دستگاه‌های متقابل: امکان پیمایش از ابتدا به انتها و بالعکس در لیست فراهم می‌شود.
  • عملیات‌های سریعتر: حذف گره از هر نقطه در لیست به سادگی امکان‌پذیر است زیرا به گره قبلی دسترسی داریم.

معایب لیست پیوندی دو طرفه

  • مصرف حافظه بیشتر: لیست پیوندی دو طرفه نسبت به لیست پیوندی تک‌طرفه حافظه بیشتری مصرف می‌کند زیرا هر گره نیاز به دو اشاره‌گر دارد (یک اشاره‌گر به گره بعدی و دیگری به گره قبلی).
  • پیچیدگی در پیاده‌سازی: پیاده‌سازی لیست پیوندی دو طرفه پیچیده‌تر از پیاده‌سازی لیست پیوندی تک‌طرفه است و نیاز به مدیریت دقیق اشاره‌گرها دارد.

کاربردهای لیست پیوندی دو طرفه

لیست پیوندی دو طرفه در بسیاری از زمینه‌ها کاربرد دارد، از جمله:

  • پیاده‌سازی صف‌های دو طرفه (Deque) که نیاز به افزودن یا حذف داده‌ها از هر دو طرف دارند.
  • پیاده‌سازی ساختارهای داده‌ای پیچیده مانند گراف‌ها یا درخت‌ها که نیاز به دسترسی به گره‌های قبلی و بعدی دارند.
  • در سیستم‌هایی که نیاز به انجام عملیات‌هایی مانند پیمایش یا جستجو در دو جهت مختلف دارند.

در نهایت، لیست پیوندی دو طرفه یک ساختار داده‌ای مفید و کاربردی است که می‌تواند در برنامه‌هایی که نیاز به دسترسی به هر دو طرف داده‌ها دارند، مورد استفاده قرار گیرد. برای آشنایی بیشتر با مفاهیم لیست پیوندی دو طرفه و دیگر ساختارهای داده‌ای، می‌توانید به سایت saeidsafaei.ir مراجعه کنید و از اسلایدهای محمد سعید صفایی بهره‌مند شوید.

اسلاید آموزشی

آرایه ها و تمرینات مکمل فلوچارت

آرایه ها و تمرینات مکمل فلوچارت
مبانی کامپیوتر و برنامه سازی

در این مبحث، به شناخت، انواع و طرز استفاده از آرایه‌ها پرداخته می‌شود و چندین مثال عملی با استفاده از فلوچارت و آرایه‌ها رسم خواهیم کرد. همچنین، با توجه به اهمیت فلوچارت در طراحی الگوریتم‌ها، در بخش دوم اسلایدها، چندین تمرین مهم با رسم فلوچارت در اختیار شما قرار خواهد گرفت تا مهارت‌های عملی شما در این زمینه تقویت شود.

مقالات آموزشی برای آشنایی با اصطلاحات دنیای کامپیوتر

پایان به آخرین مرحله در الگوریتم گفته می‌شود که پس از آن هیچ پردازش یا محاسبات بیشتری انجام نمی‌شود.

سرور کامپیوتری است که خدماتی را به دیگر سیستم‌ها یا کاربران ارائه می‌دهد. سرورها در شبکه‌ها برای ذخیره‌سازی داده‌ها و پاسخگویی به درخواست‌ها استفاده می‌شوند.

لایه‌ای که ارتباطات بین دستگاه‌ها را مدیریت می‌کند و تضمین می‌کند که داده‌ها به درستی به مقصد برسند.

گراف وزنی گرافی است که در آن به هر یال یک وزن یا هزینه اختصاص داده می‌شود.

هوش مصنوعی توزیع‌شده به سیستم‌هایی اطلاق می‌شود که از چندین عامل هوش مصنوعی برای حل مسائل پیچیده به‌طور همزمان استفاده می‌کنند.

نوعی سیستم که اطلاعات کامل از جزئیات عملکرد آن در دسترس است و به کاربر اجازه می‌دهد تا عملکرد درونی آن را بررسی و تحلیل کند.

اینترنت کوانتومی به شبکه‌ای گفته می‌شود که بر اساس اصول فیزیک کوانتومی برای انتقال داده‌ها با امنیت بالا عمل می‌کند.

سمانتیک به معنای بررسی معنای دستورات و کدها در یک زبان برنامه‌نویسی است. این بخش تعیین می‌کند که آیا کد نوشته شده به درستی به وظایف خود عمل می‌کند یا خیر.

یکپارچگی داده‌ها به تضمین صحت، دقت و اعتبار داده‌ها در سراسر سیستم‌های مختلف اطلاق می‌شود.

محاسبات کوانتومی برای هوش مصنوعی به استفاده از رایانه‌های کوانتومی برای تسریع در پردازش و تحلیل داده‌ها در الگوریتم‌های هوش مصنوعی اطلاق می‌شود.

یادگیری فدرال به روشی برای آموزش مدل‌های یادگیری ماشین گفته می‌شود که داده‌ها در دستگاه‌های محلی باقی می‌مانند و تنها مدل‌های آموزش دیده با یکدیگر به اشتراک گذاشته می‌شوند.

شرط به معنای مقایسه‌ای است که باید در حلقه‌ها یا دستورات شرطی بررسی شود. شرط اگر درست باشد، عمل خاصی اجرا خواهد شد.

حافظه استاتیک حافظه‌ای است که در زمان کامپایل برنامه تخصیص می‌یابد و پس از آن تغییر نمی‌کند.

وزن یا مقدار هر رقم در سیستم‌های عددی که با توجه به موقعیت آن در عدد تغییر می‌کند. به عنوان مثال در سیستم ده‌دهی، هر رقم با پایه‌های مختلف (ده به توان اندیس) ضرب می‌شود.

یکپارچگی چند پلتفرمی به استفاده از سیستم‌ها و ابزارهایی اطلاق می‌شود که امکان همکاری و ارتباط داده‌ها و سرویس‌ها را در پلتفرم‌های مختلف فراهم می‌کنند.

طراحی مولد به استفاده از الگوریتم‌های هوش مصنوعی برای ایجاد طرح‌ها و ساختارهای جدید از داده‌ها اطلاق می‌شود.

سیستم‌هایی هستند که قادرند داده‌ها را پردازش کرده و بر اساس آن‌ها تصمیم‌گیری نمایند، به گونه‌ای که شبیه به تفکر انسان عمل می‌کنند.

شبکه‌ای که مساحتی وسیع‌تر از یک LAN پوشش می‌دهد و معمولاً برای ارتباطات بین کشورها و قاره‌ها استفاده می‌شود.

واحد کنترل است که مسئول هدایت و کنترل سایر بخش‌های پردازنده است و عملیات‌ها را طبق دستورالعمل‌ها انجام می‌دهد.

بهینه‌سازی مسیرها و استفاده از منابع شبکه برای بهبود عملکرد کلی شبکه.

در توپولوژی شبکه‌های بی‌سیم، کامپیوترها از کارت شبکه کابلی استفاده نمی‌کنند و از تکنولوژی بی‌سیم برای ارتباط استفاده می‌شود.

ساختار داده روشی برای سازمان‌دهی و ذخیره داده‌ها در حافظه است که به افزایش کارایی برنامه‌ها کمک می‌کند.

الگوریتم مرتب‌سازی سریع یک الگوریتم تقسیم و غلبه است که عنصر مرجعی را انتخاب کرده و آرایه را به دو بخش مرتب تقسیم می‌کند.

نشانی عددی که به هر دستگاه متصل به شبکه اختصاص داده می‌شود تا آن دستگاه در شبکه شناسایی شود.

عملگرهای سطح بیت برای انجام عملیات‌های منطقی روی بیت‌های داده‌ها استفاده می‌شوند. این عملگرها شامل AND، OR و XOR هستند.

فرآیندی که در آن داده‌ها از هر لایه دریافت شده و سرآیندها حذف می‌شود تا داده‌های اصلی به مقصد برسند.

پردازش زبان طبیعی برای مراقبت‌های بهداشتی به کاربرد NLP برای تجزیه و تحلیل داده‌های متنی در مراقبت‌های بهداشتی اطلاق می‌شود.

حلقه while به طور مکرر یک دستور را اجرا می‌کند تا زمانی که شرط خاصی برقرار باشد. این حلقه برای مواقعی که تعداد تکرار مشخص نیست، مناسب است.

VLAN‌ای که بدون Tagging از طریق پورت‌های Trunk عبور می‌کند.

اولین و مهم‌ترین سوئیچ در شبکه که مسئول تعیین بهترین مسیرها برای ارسال داده‌ها است.

رمزنگاری کوانتومی به استفاده از اصول فیزیک کوانتومی برای امن‌سازی داده‌ها اشاره دارد.

عناصری که به سیستم وارد می‌شوند، مانند اطلاعات، انرژی، انسان یا هر ماده‌ای که سیستم آن را پردازش کند. این ورودی‌ها می‌توانند از محیط یا منابع داخلی سیستم باشند.

سیستم‌های خودمختار (AS) به سیستم‌هایی اطلاق می‌شود که قادر به تصمیم‌گیری و انجام وظایف به‌طور خودکار بدون نیاز به انسان هستند.

مهندسی تقویت‌شده توسط هوش مصنوعی به استفاده از الگوریتم‌های هوش مصنوعی برای بهبود و تسهیل فرآیندهای مهندسی و طراحی اطلاق می‌شود.

این واژه به سیستم‌هایی اطلاق می‌شود که داده‌های خارجی را برای قراردادهای هوشمند در بلاکچین فراهم می‌کنند. این داده‌ها می‌توانند شامل قیمت‌ها، وضعیت آب و هوا، یا دیگر داده‌های خارجی باشند.

بکشید مشاهده بستن پخش
Saeid Safaei Scroll Top
0%