پشته. سید ناصر رضوی

Σχετικά έγγραφα
محاسبه ی برآیند بردارها به روش تحلیلی

روش محاسبه ی توان منابع جریان و منابع ولتاژ

جلسه ی ۱۰: الگوریتم مرتب سازی سریع

تصاویر استریوگرافی.

مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل

مثال( مساله الپالس در ناحیه داده شده را حل کنید. u(x,0)=f(x) f(x) حل: به کمک جداسازی متغیرها: ثابت = k. u(x,y)=x(x)y(y) X"Y=-XY" X" X" kx = 0

آزمایش 8: تقویت کننده عملیاتی 2

جلسه ی ۴: تحلیل مجانبی الگوریتم ها

جلسه ی ۲۴: ماشین تورینگ

مدار معادل تونن و نورتن

تمرین اول درس کامپایلر

آزمایش 1: پاسخ فرکانسی تقویتکننده امیتر مشترك

ﯽﺳﻮﻃ ﺮﯿﺼﻧ ﻪﺟاﻮﺧ ﯽﺘﻌﻨﺻ هﺎﮕﺸﻧاد

ویرایشسال 95 شیمیمعدنی تقارن رضافالحتی

جلسه 3 ابتدا نکته اي در مورد عمل توابع بر روي ماتریس ها گفته می شود و در ادامه ي این جلسه اصول مکانیک کوانتمی بیان. d 1. i=0. i=0. λ 2 i v i v i.

1) { } 6) {, } {{, }} 2) {{ }} 7 ) { } 3) { } { } 8) { } 4) {{, }} 9) { } { }

سلسله مزاتب سبان مقدمه فصل : زبان های فارغ از متن زبان های منظم

شاخصهای پراکندگی دامنهی تغییرات:

Top Down Parsing LL(1) Narges S. Bathaeian

جلسه ی ۵: حل روابط بازگشتی

تحلیل مدار به روش جریان حلقه

جلسه 9 1 مدل جعبه-سیاه یا جستاري. 2 الگوریتم جستجوي Grover 1.2 مسا له 2.2 مقدمات محاسبات کوانتمی (22671) ترم بهار

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت

آزمون مقایسه میانگین های دو جامعه )نمونه های بزرگ(

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

جلسه 12 به صورت دنباله اي از,0 1 نمایش داده شده اند در حین محاسبه ممکن است با خطا مواجه شده و یکی از بیت هاي آن. p 1

فصل پنجم زبان های فارغ از متن

بسم اهلل الرحمن الرحیم آزمایشگاه فیزیک )2( shimiomd

جلسه ی ۱۸: درهم سازی سرتاسری - درخت جست و جوی دودویی

سايت ويژه رياضيات درسنامه ها و جزوه هاي دروس رياضيات

srmphp.blog.ir موسسه آموزش عالی مهراروند ساختمان داده مهندس سید رسول موسوی تهیه و تنظیم: الهام صباحی

توابع و کتابخانه ها: سید ناصر رضوی

محاسبات کوانتمی 1 علم ساخت و استفاده از کامپیوتري است که بر پایه ي اصول مکانیک کوانتم قرار گرفته است.

همبستگی و رگرسیون در این مبحث هدف بررسی وجود یک رابطه بین دو یا چند متغیر می باشد لذا هدف اصلی این است که آیا بین

فعالیت = ) ( )10 6 ( 8 = )-4( 3 * )-5( 3 = ) ( ) ( )-36( = m n m+ m n. m m m. m n mn

جلسه ی ۱۱: درخت دودویی هرم

جلسه 22 1 نامساویهایی در مورد اثر ماتریس ها تي وري اطلاعات کوانتومی ترم پاییز

تلفات خط انتقال ابررسی یک شبکة قدرت با 2 به شبکة شکل زیر توجه کنید. ژنراتور فرضیات شبکه: میباشد. تلفات خط انتقال با مربع توان انتقالی متناسب

هو الحق دانشکده ي مهندسی کامپیوتر جلسه هفتم

جلسه ی ۳: نزدیک ترین زوج نقاط

به نام خدا. الف( توضیح دهید چرا از این تکنیک استفاده میشود چرا تحلیل را روی کل سیگنال x[n] انجام نمیدهیم

جلسه 2 1 فضاي برداري محاسبات کوانتمی (22671) ترم بهار

Angle Resolved Photoemission Spectroscopy (ARPES)

دانشکده ی علوم ریاضی جلسه ی ۵: چند مثال

جلسه 28. فرض کنید که m نسخه مستقل یک حالت محض دلخواه

فصل 5 :اصل گسترش و اعداد فازی

باشند و c عددی ثابت باشد آنگاه تابع های زیر نیز در a پیوسته اند. به شرطی که g(a) 0 f g

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

به نام خدا طراحی کامپایلرها

تحلیل الگوریتم پیدا کردن ماکزیمم

تابع هزینه حداقل میانگین مربعات توأم با حداقل واریانس خطا

Spacecraft thermal control handbook. Space mission analysis and design. Cubesat, Thermal control system

مسائل. 2 = (20)2 (1.96) 2 (5) 2 = 61.5 بنابراین اندازه ی نمونه الزم باید حداقل 62=n باشد.

آموزش SPSS مقدماتی و پیشرفته مدیریت آمار و فناوری اطالعات -

ندرک درگ ندرک درگ شور

فهرست مطالب جزوه ی فصل اول مدارهای الکتریکی مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل تحلیل مدار به روش جریان حلقه... 22

تمرینات درس ریاض عموم ٢. r(t) = (a cos t, b sin t), ٠ t ٢π. cos ٢ t sin tdt = ka۴. x = ١ ka ۴. m ٣ = ٢a. κds باشد. حاصل x٢

نظریه زبان ها و ماشین ها

فصل سوم جریان های الکتریکی و مدارهای جریان مستقیم جریان الکتریکی

جلسه 14 را نیز تعریف کرد. عملگري که به دنبال آن هستیم باید ماتریس چگالی مربوط به یک توزیع را به ماتریس چگالی مربوط به توزیع حاشیه اي آن ببرد.

فصل دهم: همبستگی و رگرسیون

ثابت. Clausius - Clapeyran 1

جلسه دوم سوم چهارم: مقدمه اي بر نظریه میدان

هدف از این آزمایش آشنایی با رفتار فرکانسی مدارهاي مرتبه اول نحوه تأثیر مقادیر عناصر در این رفتار مشاهده پاسخ دامنه

ارزیابی بهره وری متقاطع DEA بر پایه بهبود پارتو


درخت. سید ناصر رضوی

هد ف های هفته ششم: 1- اجسام متحرک و ساکن را از هم تشخیص دهد. 2- اندازه مسافت و جا به جایی اجسام متحرک را محاسبه و آن ها را مقایسه کند 3- تندی متوسط

عنوان: رمزگذاري جستجوپذیر متقارن پویا

6- روش های گرادیان مبنا< سر فصل مطالب

شبکه های عصبی در کنترل

به نام خدا. Sparse Coding ستاره فرامرزپور

حفاظت مقایسه فاز خطوط انتقال جبرانشده سري.

نویسنده: محمدرضا تیموری محمد نصری مدرس: دکتر پرورش خالصۀ موضوع درس سیستم های مینیمم فاز: به نام خدا

Beta Coefficient نویسنده : محمد حق وردی

تجزیهی بندرز مقدمه کشور هستند. بدین سبب این محدودیتهای مشترک را محدودیتهای پیچیده

راهنمای کاربری موتور بنزینی )سیکل اتو(

قاعده زنجیره ای برای مشتقات جزي ی (حالت اول) :

آزمایش ۱ اندازه گیری مقاومت سیم پیچ های ترانسفورماتور تک فاز

جلسه 2 جهت تعریف یک فضاي برداري نیازمند یک میدان 2 هستیم. یک میدان مجموعه اي از اعداد یا اسکالر ها به همراه اعمال

7- روش تقریب میانگین نمونه< سر فصل مطالب

1- مقدمه ای بر شبیه سازی< سر فصل مطالب

فصل چهارم تعیین موقعیت و امتدادهای مبنا

:موس لصف یسدنه یاه لکش رد یلوط طباور

به نام خدا طراحی کامپایلرها

جلسه 16 نظریه اطلاعات کوانتمی 1 ترم پاییز

جلسه 15 1 اثر و اثر جزي ی نظریه ي اطلاعات کوانتومی 1 ترم پاي یز جدایی پذیر باشد یعنی:

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

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت

معادلهی مشخصه(کمکی) آن است. در اینجا سه وضعیت متفاوت برای ریشههای معادله مشخصه رخ میدهد:

Delaunay Triangulations محیا بهلولی پاییز 93

جزوه کارگاه برنامه نویسی

هادي ويسي. دانشگاه تهران - دانشکده علوم و فنون نوين نیم سال اول

3 لصف یربج یاه ترابع و ایوگ یاه ناوت

تغییر پذیری و مسیریابی در شبکه Ad Hoc با استفاده از الگوریتم کلونی مورچگان

مثلث بندی دلونی فصل 9 مژگان صالحی- دی 92 استاد راهنما: جناب آقای دکتر محمد فرشی

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

آموزش شناسایی خودهمبستگی در دادههای سری زمانی و نحوه رفع آن در نرم افزار EViews

1- مقدمه. 2 Action. 1 Heuristic

یونیزاسیون اشعهX مقدار مو ثر یونی را = تعریف میکنیم و ظرفیت مو ثر یونی نسبت مقدار مو ثر یونی به زمان تابش هدف آزمایش: مقدمه:

Transcript:

پشته www.snrazavi.ir ۱۳۹۵ سید ناصر رضوی

پشته و صف 2 پایه ای. داده ای انواع محتویات: اشیا از مجموعه ای عملیات: درج حذف پیمایش آزمایش خالی بودن است. واضح درج از منظور عنصر کدام باید حذف شود stack push queue pop enqueue dequeue

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

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

واسط پشته 5 رشته ها. از پشته یک دست گرمی. public class StackOfStrings push pop StackOfStrings() ایجاد یک پشته خالی void String boolean push(string s) pop() isempty() درج یک عنصر در باالی پشته حذف عنصر باالی پشته و برگرداندن آن بررسی خالی بودن پشته int size() برگرداندن تعداد عناصر موجود در پشته دنباله ی کردن معکوس مثالی. کاربر کد رشته های خوانده شده ورودی. از

آزمایش درستی عملکرد پشته 6 تعدادی رشته را از ورودی استاندارد بخوان. اگر رشتهی ورودی برابر با - است یک رشته از باالی پشته حذف در غیر این صورت رشتهی خوانده شده را در باالی پشته درج کن. کن. را چاپ آن و public static void main(string[] args) { StackOfStrings stack = new StackOfStrings(); while (!StdIn.isEmpty()) { String item = StdIn.readString(); if (item.equals( - )) StdOut.print(stack.pop() + ); else stack.push(item); % more be.txt be or not be - - that - - - % java StackOfStrings < be.txt be not that or be

پشته: پیاده سازی با لیست پیوندی 7 بده. انجام لیست ابتدای از را و حذف درج کن نگهداری عنصر اولین به ارجاع یک StdIn StdOut first be be or or be not not or be not or be - not or be

حذف از پشته 8 ذخیرهی عنصری باید که برگردانده شود String item = first.item; first = first.next; first or be first or be اولین گره حذف کالس درونی private class Node { private String item; private Node next; شده ذخیره عنصر برگرداندن return item;

درج در پشته 9 Node oldfirst = first; oldfirst کن ذخیره لیست عنصر اولین به ارجاع یک first or be oldfirst کن ایجاد جدید عنصر ذخیره ی برای جدید گره یک first = new node(); first or be کن مقداردهی را جدید گره متغیرهای first.item = not ; first.next = oldfirst; first not or be

پشته: پیاده سازی در جاوا 10 public class LinkedStackOfStrings { private Node first = ; private class Node { private String item; private Node next; کالس درونی public boolean isempty() { return first == ; public void push(string item) { Node oldfirst = first; first = new Node(); first.item = item; first.next = oldfirst; public String pop() { String item = first.item; first = first.next; return item; ادعا. تمام عملیات پشته در زمان ثابت انجام میشوند.

پشته: پیاده سازی به وسیله ی آرایه 11 پیادهسازی پشته به وسیلهی آرایه. از آرایهی []s برای ذخیرهی N عنصر پشته استفاده کن. درج: عنصر جدید را در حذف: عنصر واقع در مکان s[n] مکان 1] s[n ذخیره کن. را حذف کن. s[] be or not be 0 1 2 3 4 5 6 7 8 9 N capacity = 10 پشته از ظرفیت بیشتر عناصر تعداد اگر اشکال. می دهد. رخ باشد سرریز ]در ادامه[

پشته: پیاده سازی در جاوا 12 public class FixedCapacityStackOfStrings { private String[] s; private int N = 0; تقلب public FixedCapacityStackOfStrings(int capacity) { s = new String[capacity]; public int size() { return N; public boolean isempty() { return N == 0; public void push(string item) { s[n++] = item; public String pop() { return s[--n];

مالحظات پشته 13 پاریز. و سرریز در پاریز: پشته ی خالی از هنگام حذف دهید. بروز استثنا یک ادامه[ ]در کنید. بزرگ تر را آرایه اندازه ی سرریز: اتالف حافظه. نیست. نیاز مورد دیگر که به شی ای ارجاع یک نگهداشتن public String pop() { if (isempty()) throw new RuntimeException( Empty stack ); String item = s[--n]; s[n] = ; return item; است. مجاز پوچ یک شیء درج فعلی پیاده سازی در پوچ. اشیای

س س پشته: تغییر اندازه ی آرایه 14 کاربر. کد وسیله ی به پشته اندازه ی تنظیم مشکل. اندازه ی پشته ی جدید چقدر باشد. استراتژی خسیس. یابد: افزایش ثابت مقدار یک اندازه ی به آرایه اندازه ی f(n) = N + c برابر شود: دو آرایه اندازه ی رشد. استراتژی f(n) = N * 2 است بهتر استراتژی کدام.

مقایسه استراتژی های خسیس و رشد 15 استفاده زیر هزینه ی مدل از استراتژی دو این مقایسه ی منظور به می کنیم: است. واحد یک اندازه ی به هزینه ای دارای و می کند اضافه پشته باالی به عنصر جدید یک معمولی: درج عمل f(n) عمل درج ویژه: میکند و سپس یک آرایهی جدید با اندازهی عنصر جدید را در باالی پشته درج ایجاد میکند. میکند هزینهی N عنصر موجود را در این عملیات برابر است آرایهی با: کپی جدید f(n) + N + 1 هزینه ی درج عنصر جدید جدید آرایه ی ایجاد هزینه ی هزینه ی کپی کردن عناصر موجود در آرایه ی جدید

استراتژی خسیس 4) = (c 16 4 + 1 با آرایه یک با اندازه ی صفر شروع می کنیم. 1 1 فاز ۱ 1 8 + 4 + 1 1 1 1 فاز 2 12 + 8 + 1 1 1 1 فاز ۳ 16 + 12 + 1 1 1 1 فاز 4

کارایی استراتژی خسیس 17.c i با است برابر آرایه اندازه ی فاز i در هزینهی کل فاز i برابر است با: c i هزینهی ایجاد آرایه جدید: 1 i c هزینهی کپی کردن عناصر: c هزینهی درج عناصر جدید:.2ci i با است برابر فاز کل هزینه ی نتیجه در برای فازها کل تعداد که آنجا از است برابر عنصر با: است برابر فازها کل هزینه ی نتیجه در با N/c درج N 2c 1 + 2 + + Τ N c O Τ N 2 c

استراتژی رشد 18 فاز 1 0 4 فاز ۱ اندازه ی با آرایه یک با یک شروع می کنیم. 7 1 فاز 2 13 1 1 1 فاز ۳ 25 1 1 1 1 1 1 1 فاز 4

کارایی استراتژی رشد 19. 2 i با است برابر آرایه اندازه ی فاز در i هزینهی کل فاز i برابر است با: 2 i 2 i 1 2 i 1 هزینهی ایجاد آرایه جدید: هزینهی کپی کردن عناصر: هزینهی درج عناصر جدید:.2 i+1 i با است برابر فاز کل هزینه ی نتیجه در برای فازها کل تعداد که آنجا از است برابر عنصر با: است برابر فازها کل هزینه ی نتیجه در با + 1 N lg درج N 2 1 + 2 2 + 2 3 + + 2 lg N+1 = 2 lg N+2 2 = 4N 2 O N

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

تحلیل سرشکن شده: مثال 21 محاسبه ی هزینه ی سرشکن شده ی رشد: قابل پشته های در درج عمل هر. زنی. روش جمع مجموع هزینهی N عمل درج همان گونه که دیدید برابر است با - 2 4N نتیجه در هزینه ی سرشکن شده ی است برابر درج عمل هر با O(1). روش حسابداری. در این روش برای انجام پرداخت شده در حساب حساب خود بپردازیم. هب] برخی از عملیات در دنباله هزینهی بیشتری از آنچه که واقعا نیاز است میپردازیم. هزینههای اضافی ما ذخیره میشوند. سپس در هنگام انجام یک عمل پر هزینه میتوانیم مقداری از هزینه را از موجودی شرطی که موجودی مثبت باشد[

تحلیل سرشکن شده به روش حسابداری: مثال 22 می پردازیم. دالر درج عمل هر برای آرایه[ ایجاد هزینه ی گرفتن نظر در ]بدون ۳ 1$ a موجودی 2$ 3$ 2$ a b 3$ 3$ 3$ a b c 3$ 3$ 1$ a b c d 3$ 5$ 5$ a b c d e 3$ 3$ 1$ a b c d e f 3$ 5$ 1$ a b c d e f g 3$ 7$ 1$ a b c d e f g h 3$ 9$ 9$ a b c d e f g h i 3$ 3$

پشته ی قابل رشد: پیاده سازی 23 public class ResizingArrayStackOfStrings { private String[] s; private int N = 0; public ResizingArrayStackOfStrings() { s = new String[1]; public void push(string item) { if (N == s.length) resize(2 * s.length); s[n++] = item; public void resize(int capacity) { String[] copy = new String[capacity]; for (int i = 0; i < N; i++) copy[i] = s[i]; s = copy;...

پشته: هزینه سرشکن شده درج 24 هزینه ی درج N ایجاد هزینه ی گرفتن نظر در ]بدون اول. عنصر آرایه جدید[ N + (1 + 2 + 4 + + N) ~ 3N هزینهی کپیها هزینه ی درجها

س پشته ی قابل رشد: کوچک کردن آرایه 25 کنیم کوچک را آرایه اندازه ی. چگونه راهحل اول. درج: وقتی آرایه پر است اندازهی آن را دو برابر میکنیم. حذف: وقتی آرایه نیمه پر است اندازهی آن را نصف میکنیم. در روش این بدترین حالت است! هزینه پر بسیار عملیات از دنباله ای درج حذف درج حذف بگیرید نظر در است پر آرایه که وقتی را و درج حذف... هزینه ای دارای عمل هر این حالت در متناسب با N است!

س پشته ی قابل رشد: کوچک کردن آرایه 26 کنیم کوچک را آرایه اندازه ی. چگونه راهحل کارا. درج: وقتی آرایه پر است اندازهی آن را دو برابر میکنیم. حذف: وقتی یک چهارم آرایه پر است اندازهی آن را نصف می کنیم. public String pop() { String item = s[--n]; s[n] = ; if (N > 0 && s.length = 4 * N) resize( s.length / 2 ); return item;

27 اه هداد نامتخاس - یوضر رصان دیس ۱۳۹۵ - s[] s.length N pop() push() 7 6 5 4 3 2 1 0 1 0 1 1 be 2 2 be or be 4 3 or not or be 4 4 not not or be 8 5 not or be 8 4 - be not or be 8 5 be not or be 8 4 be - or be 8 3 not - that or be 8 4 that or be 8 3 that - be 4 2 or - 2 1 be - is 2 2 is لاثم :هزادنا رییغت تیلباق اب هتشپ

س پیاده سازی پشته: لیست پیوندی یا آرایه 28 است بهتر پیاده سازی کدام. پیادهسازی با لیست پیوندی. هزینهی هر عمل در بدترین حالت ثابت دارای سربار زمانی و حافظه به دلیل وجود پیوندها پیادهسازی با آرایه با قابلیت تغییر اندازه. هزینهی سرشکن شدهی هر عمل ثابت اتالف حافظهی کمتر

صف

صف 30 تفاوت صف با پشته در این خروجی«پیروی میکند. اولین ورودی»اولین اصل از صف در عناصر حذف و درج که است به عبارت دیگر هر زمان که بخواهیم میتوانیم یک عنصر به انتهای صف اضافه کنیم اما در هنگام حذف تنها اجازه داریم اولین عنصر )عنصری که بیشتر از بقیهی عناصر در صف بوده است( را از صف حذف کنیم. عملیات اصلی صف. درج یک عنصر در انتهای صف حذف یک عنصر از ابتدای صف

واسط صف 31 enqueue public class QueueOfStrings QueueOfStrings() ایجاد یک صف خالی void درج یک عنصر در انتهای صف (s enqueue(string String dequeue() حذف یک عنصر از ابتدا و برگرداندن آن boolean isempty() بررسی خالی بودن صف int size() برگرداندن تعداد عناصر موجود در صف dequeue

صف: پیاده سازی با لیست پیوندی 32 پیوندی لیست در عنصر آخرین و عنصر اولین به ارجاع یک کن. نگهداری StdIn StdOut be be or be or not be or not be or not - be or not

حذف از صف 33 ذخیره ی عنصری باید که برگردانده شود String item = first.item; گره اولین حذف first = first.next; کالس درونی first first be or be or private class Node { private String item; private Node next; شده ذخیره عنصر برگرداندن return item;

درج در صف 34 Node oldlast = last; oldlast last کن ذخیره لیست عنصر آخرین به ارجاع یک first be or برای جدید گره یک کن ایجاد انتهای صف last = new node(); last.item = not ; oldlast last first be or not را جدید گره به انتهای صف وصل کن oldlast.next = last; first be or not

صف: پیاده سازی در جاوا 35 public class LinkedQueueOfStrings { private Node first, last; private class Node { /* same as before */ کالس درونی public boolean isempty() { return first == ; public void enqueue(string item) { Node oldlast = last; last = new Node(); last.item = item; if (isempty()) first = last; else oldlast.next = last; public String dequeue() { String item = first.item; first = first.next; if (isempty()) last = ; return item; ادعا. تمام عملیات صف در زمان ثابت انجام میشوند.

صف: پیاده سازی با آرایه 36 پیاده سازی صف آرایه. وسیله ی به از آرایهی []q برای ذخیره ی عناصر صف کن. استفاده front = (front + 1) % capacity درج: عنصر جدید را در مکان q[rear] حذف: عنصر واقع ذخیره کن. در مکان q[front] را حذف کن. اندیسهای front و rear را به پیمانه ی ظرفیت بده. افزایش کن. اضافه را اندازه تغییر قابلیت آرایه به q[] the best of time 0 1 2 3 4 5 6 7 8 9 front rear capacity = 10

صف: مثال 37 rear front StdIn StdOut front rear be front be rear or front be or rear not front be or not rear front be or not rear - front be or not rear

صف: مثال 38 front rear StdIn StdOut be or not be rear front be or not be - be rear front or not be - or rear front not be that that rear front not be - not that rear front be - that rear front be

تمرین: پیاده سازی صف با آرایه 39 پیاده سازی صف آرایه با بزرگ شدن و کوچک قابلیت با آرایه

تمرین: پیاده سازی صف با آرایه 40 public class ResizingArrayQueueOfStrings { private String[] q; private int front; private int rear; public ResizingArrayQueueOfStrings() {... public int size() {... public boolean isempty() {... public void enqueue(string item) {... public String dequeue() {... public void resize(int capacity) {... private int next(int index) { return (index + 1) % q.length;

انواع عمومی (generics)

پشته پارامتری 42 س ذخیره ی منظور به پشته یک اینجا تا رشته ها پیاده سازی کردیم. URL ها از پشته ای یا اعداد صحیح از پشته ای اگر اما بخواهیم چه می شود. تالش اول. برای هر نوع دادهای یک پشتهی مجزا تعریف کن بازنویسی کد خسته کننده است و میتواند منجر به بروز خطا گردد. کپی کردن کد نیز خسته کننده است و میتواند منجر به بروز خطا گردد. از قبل تا روش این java 1.5 معقول ترین بود! روش

پشته پارامتری 43 س ذخیره ی منظور به پشته یک اینجا تا رشته ها پیاده سازی کردیم. URL ها از پشته ای یا اعداد صحیح از پشته ای اگر اما بخواهیم چه می شود. Object نوع از را پشته عناصر دوم تالش. کن. تعریف داریم. نوع تبدیل به نیاز کاربر کد در نوع[ همخوانی ]عدم گردد. اجرا زمان در بروز خطا باعث می تواند نوع تبدیل StackOfObjects s = new StackOfObjects(); Apple a = new Apple(); Orange b = new Orange(); s.push(a); s.push(b); a = (Apple) s.pop(); خطای زمان اجرا

پشته پارامتری 44 س ذخیره ی منظور به پشته یک اینجا تا رشته ها پیاده سازی کردیم. از URL پشته ای یا اعداد صحیح از پشته ای اگر اما بخواهیم چه ها می شود. تالش سوم. انواع از استفاده عمومی جاوا. اجتناب از تبدیل نوع در کد کاربر. تشخیص خطاهای مربوط به عدم همخوانی کامپایل. زمان در انواع پارامتر نوع Stack<Apple> s = new Stack<Apple>(); Apple a = new Apple(); Orange b = new Orange(); s.push(a); s.push(b); a = s.pop(); خطای زمان کامپایل عدم نیاز به تبدیل نوع

پشته ی پارامتری: پیاده سازی با لیست پیوندی 45 public class LinkedStackOfStrings { private Node first = ; private class Node { private String item; private Node next; public boolean isempty() { return first = ; public void push(string item) { Node oldfirst = first; first = new Node(); first.item = item; first.next = oldfirst; public class Stack<Item> { private Node first = ; private class Node { private Item item; private Node next; public boolean isempty() { return first = ; public void push(item item) { Node oldfirst = first; first = new Node(); first.item = item; first.next = oldfirst; public String pop() { String item = first.item; first = first.next; return item; public Item pop() { Item item = first.item; first = first.next; return item;

پشته ی پارامتری: پیاده سازی با آرایه 46 public class FixedCapacityStackOfStrings { private String[] s; private int N = 0; public..stackofstrings(int capacity) { s = new String[capacity]; public int size() { return N; public boolean isempty() { return N == 0; public void push(string item) { s[n++] = item; public class FixedCapacityStack<Item> { private Item[] s; private int N = 0; public FixedCapacityStack(int capacity) { s = new new Item[capacity]; Item[capacity]; public int size() { return N; public boolean isempty() { return N == 0; public void push(item item) { s[n++] = item; public String pop() { return s[--n]; public Item pop() { return s[--n]; شکل نادرست در جاوا ایجاد یک آرایه از انواع عمومی مجاز نیست!!!

پشته ی پارامتری: پیاده سازی با آرایه 47 public class FixedCapacityStackOfStrings { private String[] s; private int N = 0; public..stackofstrings(int capacity) { s = new String[capacity]; public int size() { return N; public boolean isempty() { return N == 0; public void push(string item) { s[n++] = item; public class FixedCapacityStack<Item> { private Item[] s; private int N = 0; public FixedCapacityStack(int capacity) { s = (Item[]) new Item[capacity]; new Object[capacity]; public int size() { return N; public boolean isempty() { return N == 0; public void push(item item) { s[n++] = item; public String pop() { return s[--n]; public Item pop() { return s[--n]; شکل درست تبدیل یک آرایه از Object ها به یک آرایه از Item ها

س انواع داده ای عمومی: تبدیل خودکار به شی 48 پشته ی در می توان آیا نمود ذخیره را اولیه داده ای انواع پارامتری. انواع بسته بندی کننده (Wrapper) هر نوع دادهای اولیه دارای یک بسته بندی کننده از نوع شی است. مثال: شی Integer بسته بندی کننده نوع دادهای اولیهی int است. بسته بندی خودکار. تبدیل خودکار کننده. بندی بسته نوع به اولیه داده ای نوع یک Stack<Integer> s = new Stack<Integer>(); s.push(17); int a = s.pop(); // s.push(new Integer(17)); // int a = s.pop().intvalue();

تکرارگرها (iterars)

تکراگرها 50 چالش طراحی. بازنمایی داخلی اجازه پشته دادن به کد کاربر برای حلقه و جزییات پیادهسازی آن. کردن آشکار بدون پشته عناصر روی بر زدن i N s[] be or not be 0 1 2 3 4 5 6 7 8 9 first current be not or be Iterable راه حل جاوا. پیاده سازی واسط

تکرارگرها 51 public Interface Iterable<Item> { Iterar<Item> iterar(); س. یک شیء Iterable چیست ج. هر شی با یک متد که یک Iterar برگرداند. public Interface Iterar<Item> { boolean hasnext(); boolean next(); void remove(); Iterar<String> it = stack.iterar(); while (it.hasnext()) { String s = it.next(); StdOut.println(s); س. Iterar چیست دارای ج. متدهای hasnext() و next() س. چرا یک ساختمان باید داده است. Iterable باشد ج. نوشتن حلقه های ساده زیبا و for (String s : stack) StdOut.println(s);

تکرارگر پشته: پیاده سازی لیست پیوندی 52 import java.util.iterar; public class Stack<Item> implements Iterable<Item> {... public Iterar<Item> iterar() { return new ListIterar(); private class ListIterar implements Iterar<Item> { private Node current = first; public boolean hasnext() { return current!= ; public void remove() { /* not supported */ public Item next() { Item item = current.item; current = current.next; return item;

تکرارگر پشته: پیاده سازی آرایه 53 import java.util.iterar; public class Stack<Item> implements Iterable<Item> {... public Iterar<Item> iterar() { return new ReverseArrayIterar(); private class ReverseArrayIterar implements Iterar<Item> { private int i = N; public boolean hasnext() { return i > 0; public void remove() { /* not supported */ public Item next() { return s[--i];

واسط کیسه 54 نباشد[ مهم ترتیب که ]زمانی عناصر. روی تکرار و کلکسیون یک به عناصر افزودن اصلی. کاربرد public class Bag<Item> implements Iterable<Item> void Bag() add(item x) ایجاد یک کیسه خالی درج یک عنصر کیسه int size() برگرداندن تعداد عناصر موجود در کیسه Iterable<Item> تکراگر بر روی تمام عناصر موجود iterar() )dequeue پیاده سازی. )بدون )pop پشته )بدون یا صف

کاربردها کاربردهای پشته کاربردهای صف

کاربردهای پشته 56 تجزیه در کامپایلر ماشین مجازی جاوا undo در عملگر یک واژهپرداز دکمهی برگشت در یک مرورگر وب پیادهسازی فراخوانی توابع در یک کامپایلر...

فراخوانی توابع 57 چگونه کامپایلر اجرای توابع را ممکن میسازد فراخوانی تابع: ذخیره مقادیر متغیرهای محلی و آدرس بازگشت در پشته برگشت: برداشتن آدرس بازگشت و مقادیر متغیرهای محلی از پشته public static int gcd(int p, int q) { if (q == 0) return p; else return gcd(q, gcd(192, p % q); 24) gcd(216, 192) public static int gcd(int p, int q) { if (q == 0) return p; else return gcd(q, gcd(24, p % q); 0) تابع بازگشتی. تابعی که خودش را فراخوانی میکند. همواره میتوان از پشته برای حذف فراخوانیهای بازگشتی نمود. استفاده public static int gcd(int p, int q) { if (q == 0) return p; else return gcd(q, p % q);

ارزیابی عبارت های ریاضی 58 ارزیابی هدف. عبارت های میانوندی. ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) ) الگوریتم دو پشتهای. ]دیکسترا[ عملوند: درج در پشتهی مقدار عملگر: درج در پشتهی عملگر پرانتز باز: نادیده بگیر پرانتز بسته: یک عملگر و دو عملوند را دوباره در پشتهی مقدار درج کن. حاصل و کن اعمال عملوندها روی بر را عملگر کن. حذف پشته ها روی از

ارزیابی عبارت های میانوندی 59 الگوریتم دو پشتهای. ]دیکسترا[ عملوند: درج در پشتهی مقدار عملگر: درج در پشتهی عملگر پرانتز باز: نادیده بگیر پرانتز بسته: یک عملگر و دو عملوند را دوباره در پشتهی مقدار درج کن. حاصل و کن اعمال عملوندها روی بر را عملگر کن. حذف پشته ها روی از ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) ) عملگر عملوند

ارزیابی عبارت های میانوندی 60 پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 61 پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 62 1 پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 63 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 64 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 65 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 66 2 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 67 2 + 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 68 3 2 + 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 69 3 2 + 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 70 2 + 3 = 5 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 71 5 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 72 5 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 73 5 * 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 74 5 * 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 75 4 5 * 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 76 4 * 5 * 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 77 5 4 * 5 * 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 78 5 * 1 + 4 * 5 = 20 پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 79 5 * 1 + 20 پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 80 20 5 * 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 81 5 * 20 = 100 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 82 100 1 + پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 83 100 1 + 1 + 100 = 101 پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 84 1 + 100 = 101 پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 85 101 پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 86 101 نتیجه پشته عملگر پشته مقدار ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

ارزیابی عبارت های میانوندی 87 public class Evaluate { public static void main(string[] args) { Stack<String> ops = new Stack<String>(); Stack<Double> vals = new Stack<Double>(); while (!StdIn.isEmpty()) { String s = StdIn.readString(); if (s.equals("(")) ; else if (s.equals("+")) ops.push(s); else if (s.equals("*")) ops.push(s); else if (s.equals(")")) { String op = ops.pop(); if (op.equals("+")) vals.push(vals.pop() + vals.pop()); else if (op.equals("*")) vals.push(vals.pop() * vals.pop()); else vals.push(double.parsedouble(s)); StdOut.println(vals.pop());

ارزیابی عبارت های ریاضی 88 مشاهده ی ۱. عبارت های برای پشته ای دو الگوریتم می کند. عمل درست نیز پسوندی ( 1 ( ( 2 3 + ) ( 4 5 * ) * ) + ) مشاهده ی 2. در شکل پسوندی )لهستانی نیست. پرانتزها وجود به نیازی معکوس( 1 2 3 + 4 5 * * +

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