מבנה נתונים מחסנית

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

‫בס"ד‬

‫מחסנית‬

‫‪1‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫בס"ד‬

‫מבוא‬

‫‪ ‬מבנה נתונים המשמש לאחסון אוסף האובייקטים‪.‬‬


‫‪ ‬הוא מבוסס על ‪.)LIFO( Last-In-First-Out‬‬

‫תיאור‬ ‫טיפוס‬ ‫מתודה‬


‫מוחזר‬
‫בדיקה האם מחסנית ריקה‬ ‫‪Boolean‬‬ ‫)(‪IsEmpty‬‬
‫הכנסת אלמנט לראש מחסנית‪.‬‬ ‫‪void‬‬ ‫)‪Push(T item‬‬
‫הסרת אלמנט מראש מחסנית‬ ‫‪T‬‬ ‫)(‪Pop‬‬
‫הסתכלות על האלמנט העליון מבלי להסיר אותו‬ ‫‪T‬‬ ‫)(‪Top‬‬
‫הדפסת ערכי מחסנית‬ ‫‪String‬‬ ‫)(‪ToString‬‬

‫‪2‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫בס"ד‬

‫דוגמה ‪Push‬‬

‫)‪push(20‬‬
‫)‪push(13‬‬
‫)‪push(89‬‬
‫)‪push(90‬‬
‫)‪push(11‬‬
‫)‪push(45‬‬
‫)‪push(18‬‬

‫‪3‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫בס"ד‬

‫דוגמה ‪Pop, Top‬‬

‫‪4‬‬
‫נכתב ע"י ניצן דולינסקי ‪Ⓒ‬‬
‫אין לשכפל ‪ /‬להעתיק ללא אישור‬
‫בס"ד‬

‫מימוש מחלקת מחסנית‬

Stack.cs 

public class Stack<T> {

private Node<T> first;

public Stack() {
this.first = null;
}

public Boolean IsEmpty() {


return this.first == null;
}

public void Push(T x) {


this.first = new Node<T>(x, this.first);
}

public T Pop() {
T x = this.first.GetValue();
this.first = this.first.GetNext();
return x;
}

public T Top() {
return this.first.GetValue();
}

public String ToString() {


String str = "[";
Node<T> pos = this.first;
while (pos.GetNext()!=null)
{
str = str + pos.GetValue() + ",";
pos = pos.GetNext();
}
str = str + pos.GetValue() + "]";
return str;
}
}
5
Ⓒ ‫נכתב ע"י ניצן דולינסקי‬
‫ להעתיק ללא אישור‬/ ‫אין לשכפל‬
‫בס"ד‬

Node.cs 

public class Node<T> {

T value;
Node<T> next;

public Node(T value) {


this.value = value;
this.next = null;
}

public Node(T value, Node<T> next) {


this.value = value;
this.next = next;
}

public T GetValue() {
return this.value;
}

public Node<T> GetNext() {


return this.next;
}

public void SetValue(T value) {


this.value = value;
}

public void SetNext(Node<T> next) {


this.next = next;
}

public override String ToString() {


return this.value + " ";
}
}

6
Ⓒ ‫נכתב ע"י ניצן דולינסקי‬
‫ להעתיק ללא אישור‬/ ‫אין לשכפל‬
‫בס"ד‬

Program.cs ,‫ דוגמה‬

class Program
{
static void Main(string[] args)
{

Stack<int> s1 = new Stack<int>();

s1.Push(1);
s1.Push(2);
s1.Push(3);
Console.WriteLine(s1.Top());
s1.Pop();
Console.WriteLine(s1.Top());
s1.Push(4);
Console.WriteLine(s1.ToString());
Console.ReadKey();
}
}

7
Ⓒ ‫נכתב ע"י ניצן דולינסקי‬
‫ להעתיק ללא אישור‬/ ‫אין לשכפל‬
‫בס"ד‬

‫דוגמה לפעולה חיצונית שמחשבת גודל מחסנית‬

class Program
{

public static int Size(Stack<int> s)


{
int counter = 0;
Stack<int> temp = new Stack<int>();

while (!s.IsEmpty())
{
temp.Push(s.Pop());
counter++;
}

while (!temp.IsEmpty())
s.Push(temp.Pop());

return counter;

static void Main(string[] args)


{

Stack<int> s1 = new Stack<int>();

for (int i = 0; i < 5; i++)


s1.Push(i);

Console.WriteLine(Size(s1));
Console.ReadKey();
}
}

8
Ⓒ ‫נכתב ע"י ניצן דולינסקי‬
‫ להעתיק ללא אישור‬/ ‫אין לשכפל‬

You might also like