Presentation is loading. Please wait.

Presentation is loading. Please wait.

Stacks and Queues. Stack ADT סוג של מערך מוגבל מהר מאוד ולוקחים מעט זכרון שימוש ב LIFO – LIFO (Last In, First Out) lists. –אפשר להוסיף רק בסוף הרשימה.

Similar presentations


Presentation on theme: "Stacks and Queues. Stack ADT סוג של מערך מוגבל מהר מאוד ולוקחים מעט זכרון שימוש ב LIFO – LIFO (Last In, First Out) lists. –אפשר להוסיף רק בסוף הרשימה."— Presentation transcript:

1 Stacks and Queues

2 Stack ADT סוג של מערך מוגבל מהר מאוד ולוקחים מעט זכרון שימוש ב LIFO – LIFO (Last In, First Out) lists. –אפשר להוסיף רק בסוף הרשימה PUSH –אפשר להוריד רק מסוף הרשימה POP

3 פעולות הבסיסיות : השימוש של STACK הוא LIST עם מגבלות –אפשר להוסיף רק לראש הרשימה – PUSH סוג של INSERT – POP סוג של REMOVE – PEEK דרך לראות את הערך בראש הרשימה – הדרך היחידה לראות ערכים בלי להוריד אותם !

4 Push and Pop Primary operations: Push and Pop Push – Add an element to the top of the stack Pop – Remove the element at the top of the stack A top empty stack top push an elementpush another A B pop A

5 דוגמא של POP Module Module1 Sub Main() Dim test As New Stack() Dim i As Integer For i = 1 To 5 test.Push(i) Next Console.WriteLine(test.Count) For i = 1 To test.Count Dim num As Integer = test.Pop() Console.WriteLine(num) Next End Sub End Module

6 דוגמא של PEEK Module Module1 Sub Main() Dim test As New Stack() Dim i As Integer For i = 1 To 5 test.Push(i) Next Console.WriteLine(test.Count) For i = 1 To test.Count Dim num As Integer = test.Peek() Console.WriteLine(num) Next End Sub End Module

7 להמציא מחדש את הגלגל Public Class CStack Private index As Integer Private list As New ArrayList() Public Sub New() index = -1 End Sub Public Function Count() As Integer Return list.Count() End Function Public Sub Push(ByVal val As Object) list.Add(val) index += 1 End Sub Public Function Pop() As Object Dim obj As Object = list.Item(index) list.RemoveAt(index) index -= 1 Return obj End Function Public Function Peek() As Object Return list.Item(index) End Function End Class

8 שימוש ב MAIN ( אותו דבר ) Sub Main() Dim test As New CStack() Dim i As Integer For i = 1 To 5 test.Push(i) Next Console.WriteLine(test.Count) For i = 1 To test.Count Dim num As Integer = test.Pop() Console.WriteLine(num) Next End Sub

9 Queue ADT סוג אחר של מערך מוגבל מהר מאוד, ולוקחים מעט זכרון שימוש ב FIFO – FIFO (First In, First Out) lists. –אפשר להוסיף רק בסוף הרשימה Enqueue –אפשר להוריד רק התחלת הרשימה Dequeue

10 דוגמא Module Module1 Sub Main() Dim queue As New Queue Dim i As Integer For i = 1 To 5 queue.Enqueue(i) Next For i = 1 To queue.Count Console.WriteLine(queue.Dequeue()) Next End Sub

11 תרגיל : איך בונים QUEUE? Public Class CStack Private index As Integer Private list As New ArrayList() Public Sub New() index = -1 End Sub Public Function Count() As Integer Return list.Count() End Function Public Sub Enqueue(ByVal val As Object) ?? End Sub Public Function Dequeue() As Object ??? End Function Public Function Peek() As Object Return list.Item(0) End Function End Class

12 תרגיל : לחשב מחיר על בסיס LIFO וגם FIFO QUEUE ל FIFO STACK ל LIFO יש לבנות מבנה עם מחיר וכמות תכניס לתוך STACK ו QUEUE תחשב את המחיר לפי הפונקציות DEQUEUE ( ל QUEUE) ו POP ( ל STACK)

13 איך מתחילים ?? Structure Stock Dim Amount As Integer Dim Price As Decimal End Structure Module Module1 Sub Main() Dim List1 As New Queue() Dim List2 As New Stack() Dim temp As Stock temp.Amount = 10 temp.Price = 5.5 List1.Enqueue(temp) List2.Push(temp) temp.Amount = 50 temp.Price = 8.5 List1.Enqueue(temp) List2.Push(temp) temp = List1.Peek() Console.WriteLine("What's the cost? " & temp.Price) temp = List2.Peek() Console.WriteLine("What's the cost? " & temp.Price) End Sub End Module


Download ppt "Stacks and Queues. Stack ADT סוג של מערך מוגבל מהר מאוד ולוקחים מעט זכרון שימוש ב LIFO – LIFO (Last In, First Out) lists. –אפשר להוסיף רק בסוף הרשימה."

Similar presentations


Ads by Google