برنامه نویسی

مقدمه ای بر ساختارها و الگوریتم های داده.

Summarize this content to 400 words in Persian Lang
چرا باید در وهله اول ساختارهای داده و الگوریتم ها را یاد بگیرم؟ آیا از آنها در فضای کاری خود استفاده خواهم کرد؟

سلام و خوش آمدید. ما می خواهیم اهمیت آشنایی با ساختارهای داده و الگوریتم ها و اینکه چرا مصاحبه کنندگان آنها را در مصاحبه ها ترجیح می دهند را روشن کنیم.تنظیم؟ ببند و بیا راه بیفتیم…

برای شروع، ساختار داده و همچنین الگوریتم چیست؟از ویکی‌پدیا، ساختار داده، سازماندهی، مدیریت و فرمت ذخیره‌سازی داده است که دسترسی و اصلاح کارآمد را امکان‌پذیر می‌سازد. به زبان ساده، ساختار داده راهی برای ذخیره سازی داده ها به شیوه ای کارآمد یا ساختار یافته است. در نمونه های دنیای واقعی، نمونه هایی مانند قفسه کتاب، کابینت آشپزخانه و جاکفشی داریم.در پایتون من از مقاله کلمه … Go، ساختارهای داده داخلی پایتون را پوشش داده ام که شامل: لیست ها، دیکشنری ها، تاپل ها و مجموعه ها است. ساختارهای داده داخلی به این معنی است که آنها با سینتکس آماده برای استفاده توسط کاربر همراه هستند. علاوه بر ساختارهای داده داخلی، ما ساختارهای داده ای تعریف شده توسط کاربر داریم که شامل: آرایه، پشته، صف، لیست پیوندی، درخت، گراف و نقشه نقشه هستند. این بدان معنی است که کاربر باید آنها را از ابتدا ایجاد کند.ما در مورد ساختارهای داده داخلی وارد عمق نخواهیم شد، اما می توان آن را در مقاله توضیح داد.

پس الگوریتم چیست؟الگوریتم مجموعه ای از مراحل برای حل یک مسئله خاص است که برای افراد غیر فنی نیز قابل درک است. راه‌ها و مراحل متعددی برای حل یک مسئله وجود دارد، بنابراین الگوریتم‌های متعددی برای یک مسئله خاص وجود دارد.

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

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

ساختارهای داده داخلیفهرست کنیدلیست ها ساختارهای داده ای هستند که برای ذخیره سازی داده ها به صورت متوالی استفاده می شوند.آنها از براکت مربع استفاده می کنند.هر عنصر در یک لیست از شاخص 0 ایندکس می شود.نمایه سازی منفی در لیست ها نیز در جایی پشتیبانی می شود که به آخرین مورد در یک فهرست، شاخص -1 داده شود. این به دسترسی عناصر از آخرین به اولین کمک می کند.داده های موجود در لیست ها را می توان تغییر داد.نمونه ای از یک لیست:

sample_list = [3, 5, “hello”, True, 4.76] Output: [3, 5, “hello”, True, 4.76]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تاپل هاتاپل ها مانند لیست ها کار می کنند اما داده های تاپل ها را نمی توان تغییر داد (غیرقابل تغییر).آنها از پرانتز / براکت های گرد استفاده می کنند.مثال تاپل:

sample_tuple = (1, 3, “Abdikhafar”)
Output: (1, 3, “Abdikhafar”)

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

لغت نامه هاداده ها در فرهنگ لغت به صورت جفت کلید-مقدار ذخیره می شوند.جفت ها را می توان در صورت نیاز به آنها دسترسی، اضافه و حذف کرد.داده ها در بریس های فرفری ذخیره می شوند.مثال:

sample_dict = {“first”:”Abdikhafar”, “Second”:”Issack”}
Output: sample_dict{‘first’: ‘Abdikhafar’, ‘Second’: ‘Issack’}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مجموعه هامجموعه ها نیز مانند دیکشنری ها از براکت های مجعد استفاده می کنند.آنها مجموعه ای از عناصر منحصر به فرد نامرتب را ذخیره می کنند که در آن هر عنصر داده باید منحصر به فرد باشد.مثال:

my_set = {1, 2, 3, 3, 4, 5, 5}
Output: {1, 2, 3, 4, 5}
Assuming you have a ‘stack’ of books, to get a book in the middle of the stack, one has to get the book at the top book first followed by the second book… to the book that the person wants to access. In Stack, this approach is known as LIFO (Last-in First-out).
This means that it is a linear data structure where elements are accessed only from the top position.
In Stack, elements can be pushed, accessed, and popped as required.

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ساختارهای داده تعریف شده توسط کاربرپشته

با فرض اینکه شما یک “پشته” کتاب دارید، برای دریافت کتاب در وسط پشته، باید ابتدا کتاب را در بالای کتاب قرار دهید و سپس کتاب دوم را به کتابی که شخص می‌خواهد به آن دسترسی داشته باشد. در Stack، این رویکرد به عنوان LIFO (آخرین در اولین خروج) شناخته می شود.این به این معنی است که یک ساختار داده خطی است که در آن عناصر فقط از موقعیت بالایی قابل دسترسی هستند.در Stack، عناصر را می توان در صورت لزوم فشار داد، به آنها دسترسی داشت و ظاهر شد.

stack = [‘first’, ‘second’, ‘third’] print(stack)

print()

# pushing elements
stack.append(‘fourth’)
stack.append(‘fifth’)
print(stack)
print()

# printing top
n = len(stack)
print(stack[n-1])
print()

# poping element
stack.pop()
print(stack)

——
(Output)

[‘first’, ‘second’, ‘third’] [‘first’, ‘second’, ‘third’, ‘fourth’, ‘fifth’]

fifth

[‘first’, ‘second’, ‘third’, ‘fourth’]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر در مورد پشته هاصف

برخلاف Stack، Queue بر اساس اصل معروف به FIFO (Fist-in First-out) کار می کند.صف ها دارای هر دو بخش سر و دم هستند و عملیات را می توان هم از سر و هم از دم انجام داد.این بدان معناست که داده‌های موجود در صف را می‌توان هم از سر و هم از دم به دست آورد و تغییر داد.

queue = [‘first’, ‘second’, ‘third’] print(queue)

print()

# pushing elements
queue.append(‘fourth’)
queue.append(‘fifth’)
print(queue)
print()

# printing head
print(queue[0])

# printing tail
n = len(queue)
print(queue[n-1])
print()

# poping element
queue.remove(queue[0])
print(queue)

——
(Output)

[‘first’, ‘second’, ‘third’] [‘first’, ‘second’, ‘third’, ‘fourth’, ‘fifth’]

first

fifth

[‘second’, ‘third’, ‘fourth’, ‘fifth’]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر در صفدرخت

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

class node:
def __init__(self, ele):
self.ele = ele
self.left = None
self.right = None

def preorder(self):
if self:
print(self.ele)
preorder(self.left)
preorder(self.right)

n = node(‘first’)
n.left = node(‘second’)
n.right = node(‘third’)
preorder(n)

——
(Output)

first

second

third

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر در مورد درختاننمودار

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

class adjnode:
def __init__(self, val):
self.val = val
self.next = None

class graph:
def __init__(self, vertices):
self.v = vertices
self.ele = [None]*self.v

def edge(self, src, dest):
node = adjnode(dest)
node.next = self.ele[src] self.ele[src] = node

node = adjnode(src)
node.next = self.ele[dest] self.ele[dest] = node

def __repr__(self):
for i in range(self.v):
print(“Adjacency list of vertex {}\n head”.format(i), end=””)
temp = self.ele[i] while temp:
print(” -> {}”.format(temp.val), end=””)
temp = temp.next

g = graph(4)
g.edge(0, 2)
g.edge(1, 3)
g.edge(3, 2)
g.edge(0, 3)
g.__repr__()

——
(Output)

Adjacency list of vertex 0

head -> 3 -> 2

Adjacency list of vertex 1

head -> 3

Adjacency list of vertex 2

head -> 3 -> 0

Adjacency list of vertex 3

head -> 0 -> 2 -> 1

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر در نمودارهالیست پیوند شده

لیست پیوندی یک ساختار داده خطی است که متشکل از دنباله ای از عناصر است که به یکدیگر متصل هستند و در مکان های حافظه به هم پیوسته ذخیره نمی شوند. عناصر موجود در یک لیست پیوندی با استفاده از نشانگرها به هم مرتبط می شوند.پایتون لیست های پیوندی در کتابخانه استاندارد خود ندارد.

llist = [‘first’, ‘second’, ‘third’] print(llist)

print()

# adding elements
llist.append(‘fourth’)
llist.append(‘fifth’)
llist.insert(3, ‘sixth’)
print(llist)
print()

llist.remove(‘second’)
print(llist)
print()

——
(Output)

[‘first’, ‘second’, ‘third’] [‘first’, ‘second’, ‘third’, ‘sixth’, ‘fourth’, ‘fifth’] [‘first’, ‘third’, ‘sixth’, ‘fourth’, ‘fifth’]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

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

def printdict(d):
for key in d:
print(key, “->”, d[key])

hm = {0: ‘first’, 1: ‘second’, 2: ‘third’}
printdict(hm)
print()

hm[3] = ‘fourth’
printdict(hm)
print()

hm.popitem()
printdict(hm)

——
(Output)

0 -> first

1 -> second

2 -> third

0 -> first

1 -> second

2 -> third

3 -> fourth

0 -> first

1 -> second

2 -> third

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر در HashMaps

ما اکنون اصول ساختار داده را داریم. بیایید در جلسه بعدی با هم آشنا شویم که در آن ساختارهای داده و الگوریتم‌ها را بیشتر توضیح می‌دهیم، همانطور که روی انواع الگوریتم‌ها نیز تمرکز می‌کنیم.بی صبرانه منتظر دیدنت هستم…🥳

چرا باید در وهله اول ساختارهای داده و الگوریتم ها را یاد بگیرم؟ آیا از آنها در فضای کاری خود استفاده خواهم کرد؟

سلام و خوش آمدید. ما می خواهیم اهمیت آشنایی با ساختارهای داده و الگوریتم ها و اینکه چرا مصاحبه کنندگان آنها را در مصاحبه ها ترجیح می دهند را روشن کنیم.
تنظیم؟ ببند و بیا راه بیفتیم…

برای شروع، ساختار داده و همچنین الگوریتم چیست؟
از ویکی‌پدیا، ساختار داده، سازماندهی، مدیریت و فرمت ذخیره‌سازی داده است که دسترسی و اصلاح کارآمد را امکان‌پذیر می‌سازد. به زبان ساده، ساختار داده راهی برای ذخیره سازی داده ها به شیوه ای کارآمد یا ساختار یافته است. در نمونه های دنیای واقعی، نمونه هایی مانند قفسه کتاب، کابینت آشپزخانه و جاکفشی داریم.
در پایتون من از مقاله کلمه … Go، ساختارهای داده داخلی پایتون را پوشش داده ام که شامل: لیست ها، دیکشنری ها، تاپل ها و مجموعه ها است. ساختارهای داده داخلی به این معنی است که آنها با سینتکس آماده برای استفاده توسط کاربر همراه هستند. علاوه بر ساختارهای داده داخلی، ما ساختارهای داده ای تعریف شده توسط کاربر داریم که شامل: آرایه، پشته، صف، لیست پیوندی، درخت، گراف و نقشه نقشه هستند. این بدان معنی است که کاربر باید آنها را از ابتدا ایجاد کند.
ما در مورد ساختارهای داده داخلی وارد عمق نخواهیم شد، اما می توان آن را در مقاله توضیح داد.

پس الگوریتم چیست؟
الگوریتم مجموعه ای از مراحل برای حل یک مسئله خاص است که برای افراد غیر فنی نیز قابل درک است. راه‌ها و مراحل متعددی برای حل یک مسئله وجود دارد، بنابراین الگوریتم‌های متعددی برای یک مسئله خاص وجود دارد.

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

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

ساختارهای داده داخلی
فهرست کنید
لیست ها ساختارهای داده ای هستند که برای ذخیره سازی داده ها به صورت متوالی استفاده می شوند.
آنها از براکت مربع استفاده می کنند.
هر عنصر در یک لیست از شاخص 0 ایندکس می شود.
نمایه سازی منفی در لیست ها نیز در جایی پشتیبانی می شود که به آخرین مورد در یک فهرست، شاخص -1 داده شود. این به دسترسی عناصر از آخرین به اولین کمک می کند.
داده های موجود در لیست ها را می توان تغییر داد.
نمونه ای از یک لیست:


sample_list = [3, 5, "hello", True, 4.76]
Output: [3, 5, "hello", True, 4.76]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تاپل ها
تاپل ها مانند لیست ها کار می کنند اما داده های تاپل ها را نمی توان تغییر داد (غیرقابل تغییر).
آنها از پرانتز / براکت های گرد استفاده می کنند.
مثال تاپل:


sample_tuple = (1, 3, "Abdikhafar")
Output: (1, 3, "Abdikhafar")

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

لغت نامه ها
داده ها در فرهنگ لغت به صورت جفت کلید-مقدار ذخیره می شوند.
جفت ها را می توان در صورت نیاز به آنها دسترسی، اضافه و حذف کرد.
داده ها در بریس های فرفری ذخیره می شوند.
مثال:


sample_dict = {"first":"Abdikhafar", "Second":"Issack"}
Output: sample_dict{'first': 'Abdikhafar', 'Second': 'Issack'}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مجموعه ها
مجموعه ها نیز مانند دیکشنری ها از براکت های مجعد استفاده می کنند.
آنها مجموعه ای از عناصر منحصر به فرد نامرتب را ذخیره می کنند که در آن هر عنصر داده باید منحصر به فرد باشد.
مثال:


my_set = {1, 2, 3, 3, 4, 5, 5}
Output: {1, 2, 3, 4, 5}
Assuming you have a 'stack' of books, to get a book in the middle of the stack, one has to get the book at the top book first followed by the second book... to the book that the person wants to access. In Stack, this approach is known as LIFO (Last-in First-out).
This means that it is a linear data structure where elements are accessed only from the top position.
In Stack, elements can be pushed, accessed, and popped as required.



وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ساختارهای داده تعریف شده توسط کاربر
پشته

توضیحات تصویر
با فرض اینکه شما یک “پشته” کتاب دارید، برای دریافت کتاب در وسط پشته، باید ابتدا کتاب را در بالای کتاب قرار دهید و سپس کتاب دوم را به کتابی که شخص می‌خواهد به آن دسترسی داشته باشد. در Stack، این رویکرد به عنوان LIFO (آخرین در اولین خروج) شناخته می شود.
این به این معنی است که یک ساختار داده خطی است که در آن عناصر فقط از موقعیت بالایی قابل دسترسی هستند.
در Stack، عناصر را می توان در صورت لزوم فشار داد، به آنها دسترسی داشت و ظاهر شد.

توضیحات تصویر


stack = ['first', 'second', 'third']
print(stack)

print()

# pushing elements
stack.append('fourth')
stack.append('fifth')
print(stack)
print()

# printing top
n = len(stack)
print(stack[n-1])
print()

# poping element
stack.pop()
print(stack)

------
(Output)

[‘first’, ‘second’, ‘third’]

[‘first’, ‘second’, ‘third’, ‘fourth’, ‘fifth’]

fifth

[‘first’, ‘second’, ‘third’, ‘fourth’]



وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر در مورد پشته ها
صف

توضیحات تصویر
برخلاف Stack، Queue بر اساس اصل معروف به FIFO (Fist-in First-out) کار می کند.
صف ها دارای هر دو بخش سر و دم هستند و عملیات را می توان هم از سر و هم از دم انجام داد.
این بدان معناست که داده‌های موجود در صف را می‌توان هم از سر و هم از دم به دست آورد و تغییر داد.

توضیحات تصویر


queue = ['first', 'second', 'third']
print(queue)

print()

# pushing elements
queue.append('fourth')
queue.append('fifth')
print(queue)
print()

# printing head
print(queue[0])

# printing tail
n = len(queue)
print(queue[n-1])
print()

# poping element
queue.remove(queue[0])
print(queue)

------
(Output)

[‘first’, ‘second’, ‘third’]

[‘first’, ‘second’, ‘third’, ‘fourth’, ‘fifth’]

first

fifth

[‘second’, ‘third’, ‘fourth’, ‘fifth’]


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر در صف
درخت

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


class node:
    def __init__(self, ele):
        self.ele = ele
        self.left = None
        self.right = None


def preorder(self):
    if self:
        print(self.ele)
        preorder(self.left)
        preorder(self.right)


n = node('first')
n.left = node('second')
n.right = node('third')
preorder(n)

------
(Output)

first

second

third
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر در مورد درختان
نمودار

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




class adjnode:
    def __init__(self, val):
        self.val = val
        self.next = None


class graph:
    def __init__(self, vertices):
        self.v = vertices
        self.ele = [None]*self.v

    def edge(self, src, dest):
        node = adjnode(dest)
        node.next = self.ele[src]
        self.ele[src] = node

        node = adjnode(src)
        node.next = self.ele[dest]
        self.ele[dest] = node

    def __repr__(self):
        for i in range(self.v):
            print("Adjacency list of vertex {}\n head".format(i), end="")
            temp = self.ele[i]
            while temp:
                print(" -> {}".format(temp.val), end="")
                temp = temp.next


g = graph(4)
g.edge(0, 2)
g.edge(1, 3)
g.edge(3, 2)
g.edge(0, 3)
g.__repr__()

------
(Output)

Adjacency list of vertex 0

head -> 3 -> 2

Adjacency list of vertex 1

head -> 3

Adjacency list of vertex 2

head -> 3 -> 0

Adjacency list of vertex 3

head -> 0 -> 2 -> 1

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر در نمودارها
لیست پیوند شده

توضیحات تصویر
لیست پیوندی یک ساختار داده خطی است که متشکل از دنباله ای از عناصر است که به یکدیگر متصل هستند و در مکان های حافظه به هم پیوسته ذخیره نمی شوند. عناصر موجود در یک لیست پیوندی با استفاده از نشانگرها به هم مرتبط می شوند.
پایتون لیست های پیوندی در کتابخانه استاندارد خود ندارد.


llist = ['first', 'second', 'third']
print(llist)

print()

# adding elements
llist.append('fourth')
llist.append('fifth')
llist.insert(3, 'sixth')
print(llist)
print()

llist.remove('second')
print(llist)
print()

------
(Output)

[‘first’, ‘second’, ‘third’]

[‘first’, ‘second’, ‘third’, ‘sixth’, ‘fourth’, ‘fifth’]

[‘first’, ‘third’, ‘sixth’, ‘fourth’, ‘fifth’]




وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

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



def printdict(d):
    for key in d:
        print(key, "->", d[key])


hm = {0: 'first', 1: 'second', 2: 'third'}
printdict(hm)
print()

hm[3] = 'fourth'
printdict(hm)
print()

hm.popitem()
printdict(hm)

------
(Output)

0 -> first

1 -> second

2 -> third

0 -> first

1 -> second

2 -> third

3 -> fourth

0 -> first

1 -> second

2 -> third


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر در HashMaps

ما اکنون اصول ساختار داده را داریم. بیایید در جلسه بعدی با هم آشنا شویم که در آن ساختارهای داده و الگوریتم‌ها را بیشتر توضیح می‌دهیم، همانطور که روی انواع الگوریتم‌ها نیز تمرکز می‌کنیم.
بی صبرانه منتظر دیدنت هستم…🥳

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا