الوقت/التاريخ الآن هو الجمعة مارس 29, 2024 7:16 am

2 نتيجة بحث عن Stack

إستخدامات الكلمة Static فى تطبيقات الجافا


أهلا بيك الاخت الكريمة @Laren99

لكنى اريد أن افهم هل ردك عبار عن استفسار ام اجابة عن استفسار ؟كما يجب عدم الخلط بين الكلمة المحدوزة #static و بين الفئة #Stack الخاصة بمجموعات البيانات

على اى حال سيتم نقل مشارتك الى قسم نقاش و استفسارات الاعضاء حتى تعم الفائدة لما نشرتي ....
من طرف أحمد مناع
في الأربعاء يوليو 08, 2020 2:22 pm
 
ابحث في: أساسيات اللغة Java Basics
موضوع: إستخدامات الكلمة Static فى تطبيقات الجافا
المساهمات: 5
مشاهدة: 1546

التعامل مع فئة المكدس أو الكومة Stack in java

اهلا بكم اخوانى الكرام

مفهوم المكدس أو الكومة Stack

في الحوسبة ، المكدس هو بنية بيانات تستخدم لتخزين مجموعة من الكائنات. لذلك وفرت لغة الجافا الفئة #util_Stack لانشاء هذه البنية بواسطة فقط المُنشئ الافتراضي ، الذي ينشئ مكدسًا فارغًا.
تتضمن فئة #Stack جميع الأساليب المحددة بواسطة Vector ، ويضيف العديد من الطرق الخاصة به ...ويتم إضافة العناصر وتخزينها في الكومة باستخدام الاسلوب #push . كما يمكن استرجاع الكائنات باستخدام الاسلوب #pop ، فيؤدي ذلك إلى إزالة العنصر من المكدس.

وتطبق فئة Stack طريقة (LIFO) لارجاع العناصر وهى اختصار للجملة الانجليزية  #Last-in-first-out بحيث عندما تقوم بسحب عنصر من المكدس ، فإنه يأتي من الأعلى. بمعنى آخر ، العنصر الأخير الذي أضفته إلى المكدس هو أول عنصر الذى  يعود عند استخدام الاسلوب pop

الوسم stack على المنتدى منتدى مصر التقني 243082313


وحتى نفهم بشكل اوضع دعونى اكتب لك المثال التالي :

الكود:

import java.util.Stack;



public class Test1 {

  
    public static void main(String[] args) {
      
      // إنشاء كومة أو مكدس  
      Stack st = new Stack();
      
      // إضافة بياتات الى الكومة
      st.push(2);
      st.push(1);
      st.push(5);
      st.push(3);
      st.push(4);
      
      // طباعة الكومة
      System.out.println("stack befor pop: " + st);
      
      // ارجاع بيانات المكدس بطريقة الداخل اخير خارج اولا
      st.pop();
      System.out.println("stack After pop: " + st);
    }
    
}


الاخراج :

الكود:

stack befor pop: [2, 1, 5, 3, 4]
stack After pop: [2, 1, 5, 3]



فى المثال اعلاه ستجد أن أخر عنصر تم ادخالة للمكدس st هو القيمة 4 و بالتالى عند سحب عنصر واحد من مكدسنا هذا كانت القيمة 4 هى القيمة التى تم سحبها

إستخدام الطريقة peek() Stack

تستخدم الطريقة #peek() لإرجاع كائنًا من أعلى المكدس كما فى المثال التالى :

الكود:
import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack<String> animals= new Stack<>();

        // Add elements to Stack
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);

        // Access element from the top
        String element = animals.peek();
        System.out.println("Element at top: " + element);

    }
}



Output
Stack: [Dog, Horse, Cat]
Element at top: Cat


ابحث عن العناصر فى المكدس أو الكومة

للبحث عن عنصر في المكدس ، نستخدم طريقة search (). تقوم بإرجاع موضع العنصر من أعلى المكدس. فمثلا،

الكود:
import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack<String> animals= new Stack<>();

        // Add elements to Stack
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);

        // Search an element
        int position = animals.search("Horse");
        System.out.println("Position of Horse: " + position);
    }
}


Output

Stack: [Dog, Horse, Cat]
Position of Horse: 2

وللتحقق مما إذا كانت المكدس فارغة أم لا ، نستخدم الطريقة #empty() ...مثال :

الكود:
import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack<String> animals= new Stack<>();

        // Add elements to Stack
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);

        // Check if stack is empty
        boolean result = animals.empty();
        System.out.println("Is the stack empty? " + result);
    }
}


Output

Stack: [Dog, Horse, Cat]
Is the stack empty? false

ترتيب العناصر فى المكدس أو الكومة

لكى تستطيع ترتيب عناصر الكومة أو المكدس ترتيبا تصاعديا علينا انشاء كومة أخرى دعونا نسميها مكدس مؤقت temporary stack في حين تعطى المكدس الاصلي اسم  mainStack لانشاء طريقة لترتيب عناصر الكومة ترتبيا تصاعديا على النحو التالى :

الكود:
public  Stack <Integer> Sorting(Stack<Integer> mainStack) {
        
         //إنشاء الكومة التانية باسم مؤقت
         Stack <Integer>  temporary = new Stack();
      
         // حلقة تكرارية تنتهى عندم يكون المكدس فارغ
 while (!mainStack.isEmpty()) {
            
         // سحب العنصر الاول فى المكدس طوال حلقة التكرار  
 int X = mainStack.pop();
 
 // كرر طالما المكدس المؤقت غير فارغ وأعلى المكدس المؤقت أكبر من أكس
 while (! temporary.isEmpty() &&  temporary.peek() > X) {
          
          // اسحب العناصر من المكدس المؤقت واضفه إلى المكدس الأصلي  
  mainStack.push( temporary.pop());
          
 }
        
  temporary.push(X);
 }
        
        
        return  temporary;
          
      }
    
}



و المثال بالكامل على النحو التالى :

الكود:

import java.util.Stack;



public class StackSorting {

  
    public static void main(String[] args) {
      
      // إنشاء كومة أو مكدس الاصلى او الرئيسى
      Stack <Integer> st = new Stack();
      
      
      
      // إضافة بياتات الى الكومةالرئسية
      st.push(2);
      st.push(1);
      st.push(5);
      st.push(3);
      st.push(4);
      
      // طباعة الكومة
      System.out.println("stack befor pop: " + st);
      
      // ارجاع بيانات المكدس بطريقة الداخل اخير خارج اولا
      st.pop();
      System.out.println("stack After pop: " + st);
      
      
      StackSorting s = new StackSorting();
        // استخدام الطريقة لتريبت عناصر المكدس
        Stack<Integer> sortedStack = s.Sorting(st);
    
        // طباعة المكدس بعد الترتيب
        System.out.println("Sorted Stack After pop is : " + sortedStack);
      
    }
    
    public  Stack <Integer> Sorting(Stack<Integer> mainStack) {
        
         //إنشاء الكومة التانية باسم مؤقت
         Stack <Integer>  temporary = new Stack();
      
         // حلقة تكرارية تنتهى عندم يكون المكدس فارغ
 while (!mainStack.isEmpty()) {
            
         // سحب العنصر الاول فى المكدس طوال حلقة التكرار  
 int X = mainStack.pop();
 
 // كرر طالما المكدس المؤقت غير فارغ وأعلى المكدس المؤقت أكبر من أكس
 while (! temporary.isEmpty() &&  temporary.peek() > X) {
          
          // اسحب العناصر من المكدس المؤقت واضفه إلى المكدس الأصلي  
  mainStack.push( temporary.pop());
          
 }
        
  temporary.push(X);
 }
        
        
        return  temporary;
          
      }
    
}


الاخراج :

stack befor pop: [2, 1, 5, 3, 4]
stack After pop: [2, 1, 5, 3]
Sorted Stack After pop is : [1, 2, 3, 5]
من طرف أحمد مناع
في الإثنين يناير 06, 2020 6:20 pm
 
ابحث في: أساسيات اللغة Java Basics
موضوع: التعامل مع فئة المكدس أو الكومة Stack in java
المساهمات: 0
مشاهدة: 1223

الرجوع الى أعلى الصفحة

انتقل الى: