L3
L3
فصل سوم
فهرست مطالب
مقدمهای بر الگوریتمها و مفاهیم پایه
معرفی پیچیدگی زمانی و حافظهای و روشهای تحلیل مسائل
معرفی ساختمان دادههای مقدماتی و الگوریتمهای وابسته به آنها
آرایه •
صف •
پشته •
لیست پیوندی •
تئوری درخت و گراف و الگوریتمهای مرتبط
الگوریتمهای مرتبسازی و تحلیل پیچیدگی مربوط به آنها
مباحث تکمیلی در ساختمان دادهها
4
• داده ایستا :از فضای محدود و از پیشتعریف شده استفاده کرده و این فضا در طول برنامه ثابت
است.
• داده پویا :با استفاده از اشاره گرها امکان تغییر نامحدود و پویا متناسب با دادهها را فراهم میکند.
• دادههای نیمه ایستا :برخی از ساختمان داده ها را هم به صورت محدود با استفاده از آرایه
(ساختار ایستا) و هم به صورت نامحدود با استفاده از لیست پیوندی (ساختار پویا) پیادهسازی کرد
5
درخت گراف لیست پیوندی رکورد رشته آرایه اشاره گر دد ا شاری دد صحی
6
درخت گراف لیست پیوندی رکورد رشته آرایه اشاره گر دد ا شاری دد صحی
7
سوال
Introduction Array
نوع داده مجرد یا انتزاعی ( :)ADTنوع دادهای است که در آن مشخصات دادهها و اعمال
بر روی آنها از بازنمایی و پیادهسازی داده جدا میشود.
9
Arrays [email protected]
Array:
a set of index and value
data structure:
For each index, there is a value associated with
that index.
Representation:
implemented by using consecutive memory.
10
Structure Array is
objects: A set of pairs <index, value> where for each value of index there is a value from the
set item. Index is a finite ordered set of one or more dimensions, for example, {0, … , n-1} for
one dimension, {(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)} for two dimensions, etc.
Functions:
for all A Array, i index, x item, j, size integer
Array Create(j, list) ::= return an array of j dimensions where list is a
j-tuple whose ith element is the size of the
ith dimension. Items are undefined.
Item Retrieve(A, i) ::= if (i index) return the item associated with
index value i in array A
else return error
Array Store(A, i, x) ::= if (i in index)
return an array that is identical to array
A except the new pair <i, x> has been
inserted else return error
end array
11
Notations:
list2 is a pointer to list2[0]
(list2 + i) is a pointer to list2[i] (&list2[i])
*(list2 + i) is list2[i]
13
Float a[10];
15
اگر typeنوع عناصر آرایه به اندازه 𝑛 باشد و اگر فرض کنیم آدرس شروع آرایه 𝛼 باشد آنگاه:
Array example
آرایهی Testدر زبان Cبه صورت زیر تعریف شده است .اگر آدرس شروع این آرایه 2500
باشد .م لوب است آدرس نصر ] Test[30را بیابید.
;]float Test[200
اگر typeنوع ناصر آرایه (که هر نصر از این نوع به اندازه 𝑛 است) باشد و اگر فرض کنیم آدرس شروع این آرایه 𝛼 باشد آنگاه:
حافظه ی تخصیصی به این آرایه === 𝑛 × )(𝑈1 −𝐿1 + 1) × (𝑈2 − 𝐿2 + 1 •
𝑖 − 𝐿1 × 𝑈2 − 𝐿2 + 1 + 𝑗 − 𝐿2 آدرس شروع نصر ] A[i,jدر حالتی که آرایه س ری ذخیره شده است = 𝛼 × 𝑛 + •
𝑗 − 𝐿2 × 𝑈1 − 𝐿1 + 1 + 𝑖 − 𝐿1 آدرس شروع نصر ] A[i,jدر حالتی که آرایه ستونی ذخیره شده است = 𝛼 × 𝑛 + •
19
ماتریس اسپارس
20
ماتریس اسپارس
21
ماتریس اسپارس
22
ماتریس اسپارس
23
ماتریس اسپارس
24
ساختمان داده
درخت گراف لیست پیوندی ر ورد رشته آرایه اشاره گر دد ا شاری دد صحی
26
strcpy)person.name, “james”(;
person.age=10;
person.salary=35000;