Download presentation
Presentation is loading. Please wait.
Published byΚίρκη Τρικούπης Modified over 6 years ago
1
בניית מחסנית סטטית Static Stack Implementation מורים מובילים תשע"ה
דפנה מינסטר 2015
2
אתחול מחסנית סטטית (בנאי)
data sTop -1 [0] [1] [2] [3] [4] [5] [6] [-1] public class StaticStack < T > { private T [ ] data ; // המערך private int sTop ; // מיקום ראש המחסנית public StaticStack ( ) { this.data = ( T [ ] ) new Object [ 100 ] ; this.sTop = -1 ; } סדר גודל: O(1) כל הפעולות הן בסיסיות ואין תלות באורך הקלט // ?האם מחסנית ריקה public boolean isEmpty ( ) { return ( this.sTop = = -1 ) ; } סדר גודל: O(1) כל הפעולות הן בסיסיות ואין תלות באורך הקלט
3
דחיפה למחסנית - push private static Object [ ] addPlaces ( Object [ ] array , int n ) { // איברים nהגדלת המערך המתקבל ב- Object [ ] newArray = new Object [ array.length + n ] ; for ( int i = 0 ; i < array.length ; i++ ) newArray [ i ] = array [ i ] ; return newArray ; } data sTop -1 [0] [1] [2] [3] [4] [5] [6] [-1] public void push ( T item ) { if ( this.sTop = = this.data.length - 1 ) addPlace ( this.data , 10 ) ; }
4
דחיפה למחסנית - push private static Object [ ] addPlaces ( Object [ ] array , int n ) { // איברים nהגדלת המערך המתקבל ב- Object [ ] newArray = new Object [ array.length + n ] ; for ( int i = 0 ; i < array.length ; i++ ) newArray [ i ] = array [ i ] ; return newArray ; } data sTop [0] [1] [2] [3] [4] [5] [6] [-1] public void push ( T item ) { if ( this.sTop = = this.data.length - 1 ) addPlace ( this.data , 10 ) ; this.sTop + + ; }
5
דחיפה למחסנית - push private static Object [ ] addPlaces ( Object [ ] array , int n ) { // איברים nהגדלת המערך המתקבל ב- Object [ ] newArray = new Object [ array.length + n ] ; for ( int i = 0 ; i < array.length ; i++ ) newArray [ i ] = array [ i ] ; return newArray ; } item data sTop [0] [1] [2] [3] [4] [5] [6] [-1] public void push ( T item ) { if ( this.sTop = = this.data.length - 1 ) addPlace ( this.data , 10 ) ; this.sTop + + ; this.data [ this.sTop ] = item ; } לכתב בשורה אחת אפשר גם // this.data [ this.sTop++ ] = item ; }
6
} דחיפה למחסנית - push סדר גודל: O(n) סדר גודל: O(n)
private static Object [ ] addPlaces ( Object [ ] array , int n ) { // איברים nהגדלת המערך המתקבל ב- Object [ ] newArray = new Object [ array.length + n ] ; for ( int i = 0 ; i < array.length ; i++ ) newArray [ i ] = array [ i ] ; return newArray ; } סדר גודל: O(n) n - מציין את מספר האיברים במחסנית. הפעולה מעתיקה את כל אברי המערך למערך חדש שאר הפעולות הן בסיסיות. public void push ( T item ) { if ( this.sTop = = this.data.length - 1 ) addPlace ( this.data , 10 ) ; this.sTop + + ; this.data [ this.sTop ] = item ; } סדר גודל: O(n) n - מציין את מספר האיברים במחסנית. הפעולה מזמנת את הפעולהaddPlaces שסדר הגודל שלה הוא O(n) , שאר הפעולות הן בסיסיות. לכתב בשורה אחת אפשר גם // this.data [ this.sTop++ ] = item ; }
7
שליפה ממחסנית - pop public T pop ( ) { } [6] [5] [4] [3] [2] [1] [0] 2
item2 item3 item1 data sTop 2 [0] [1] [2] [3] [4] [5] [6] [-1] public T pop ( ) { }
8
שליפה ממחסנית - pop public T pop ( ) {
item2 item3 item1 data sTop 2 [0] [1] [2] [3] [4] [5] [6] [-1] public T pop ( ) { T out = this.data [ this.sTop ] ; } out item3
9
שליפה ממחסנית - pop this.sTop - - ; return ( out ) ; public T pop ( )
item2 item3 item1 data sTop 1 [0] [1] [2] [3] [4] [5] [6] [-1] public T pop ( ) { T out = this.data [ this.sTop ] ; this.sTop - - ; return ( out ) ; } out item3
10
שליפה ממחסנית - pop הצצה למחסנית - top
item2 item3 item1 data sTop 2 [0] [1] [2] [3] [4] [5] [6] [-1] public T pop ( ) { T out = this.data [ this.sTop ] ; this.sTop - - ; return ( out ) ; } הצצה למחסנית - top public T top ( ) { return ( this.data [ this.sTop ] ); }
11
שליפה ממחסנית - pop הצצה למחסנית - top
public T pop ( ) { T out = this.data [ this.sTop ] ; this.sTop - - ; return ( out ) ; } סדר גודל: O(1) כל הפעולות הן בסיסיות ואין תלות באורך הקלט הצצה למחסנית - top public T top ( ) { return ( this.data [ this.sTop ] ); } סדר גודל: O(1) כל הפעולות הן בסיסיות ואין תלות באורך הקלט
12
תכנית ראשית ו- toString
public String toString() { String s = " The Stack is -> [ " ; for ( int i = this.sTop ; i > 0 ; i -- ) s + = this.data [ i ] + " , " ; return ( s + this.data [0] + " ] \n " ) ; } public static void main ( String [ ] args ) { // יצירת מחסנית והדפסתה StaticStack < Integer > s = new StaticStack < Integer > ( ) ; s.push ( 7 ) ; s.push ( 2 ) ; System.out.println ( s.toString ( ) ) ; s.push ( 4 ) ; s.push ( 6 ) ; s.push ( 3 ) ; } } // class StaticStack סדר גודל: O(n) n - מציין את מספר האיברים במחסנית. הפעולה עוברת על כל אברי המערך לצורך שרשורם במחרוזת, שאר הפעולות הן בסיסיות.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.