اذهب إلى المحتوى
  • 0

المكدس في جافا

Reham Numan

السؤال

Recommended Posts

  • 1

يمكن تحقيقه باستخدام المصفوفات (سافترض أن لديك معرفة نظرية بسيطة حوله):

المكدس عبارة عن نموذج خاص لتخزین البیانات واستخراجها بآلیة الداخل أولاً الخارج أخراً أو الداخل أخيراً يخرج أولاً
LIFO (LAST INPUT FIRST OUTPUT) 
نستخدم مع المكدس مؤشر واحد فقط نسميه top. عند إدخال أول قیمة فإننا نزید من قيمته فيصبح صفراً وكل ما أدخلنا قیمة جديدة فإن المؤشر یزید بمقدار واحد إلى أن یمتلئ  المكدس.
عندما یكون المكدس فارغاُ يكون top=-1 وعند القيام بعملیة إخراج لقيمة من المكدس فإننا ننقص المؤشر بمقدار واحد إلى أن تصل قیمة المؤشر إلى -1.

 

import java.io.*;
class javaapplication1 {
static final int CAPACITY=5;    // يمكنك تعديلها 
static int[] Stack=new int[CAPACITY];
static int top=-1;   // ویسمى ذیل المكدس وھو متغیر عام تستطیع الدوال الوصول إليهTop تعریف

static boolean isEmpty(){		// اختبار المكدس فيما إذا كان فارغاً
	return (top < 0);
}

static boolean isFull(){		// اختبار المكدس فيما إذا كان ممتلئ
	return (top+1== CAPACITY);
}

/*
حجم المصفوفة -1 = top نعلم أن المكدس ممتلئ عندما یكون مؤشر الذیل أي
top وإلا سنزید من المؤشر بواحد وسنضع القیمة بداخل المصفوفة بداخل الموقع الذي تكون قیمته

أي اقل من الصفر top=-1 نعلم أن المكدس يصبح فارغاً عندما تكون قیمة المؤشر
وسنطرح قیمة المؤشر top وإلا سنخرج القیمة من داخل المصفوفة التي تحمل عنوان قیمة
بواحد.
*/

static void push(int element){		// دالة لإدخال البیانات إلى المكدس 
	if (isFull())				// إذا كان ممتلئ لايمكن الإضافة عليه
		System.out.println("Stack is full.");
	else					// نضيف العنصر الجديد إلى المكدس فيما عدا ذلك
		Stack[top++] = element;
}

static int pop(){					// دالة أخراج البیانات من المكدس
	if (isEmpty()){
	   	System.out.println("Stack is empty.");
	  	System.exit( 0 );
	}
return Stack[top--];
}

// اختبار التوابع
public static void main(String args[])throws IOException{
String num;
BufferedReader br = new BufferedReader(new InputStreamReader       (System.in));
System.out.println( "Enter first integer" );

    while(!isFull()){
	num=br.readLine();
    push(Integer.parseInt(num));
}

while(!isEmpty())System.out.println(pop()+" ");

}
}
// أدخلي القيم التي تريدينها وستلاحظين أن الخرج سيحقق مفهوم المكدس

طبعاً يمكنك تعديل الكود السابق وتغليفه مثلاً ضمن class تسميه Stack ويمكنك أن تضيف له العديد من الدوال الأخرى.

ويمكنك أيضاً استخدام الكلاس stack الذي تقدمه جافا وهو  كلاس يرث الصف vector وبالتالي يرث كل الدوال الموجودة فيها.
 

import java.util.Stack;          // stack استيراد الصف
 
public class Main {
 
    public static void main(String[] args) {
 
        // تعريف غرض من الصف
        Stack ourstack = new Stack();
 
        // s هنا قمنا بإضافة 4 عناصر في الكائن
        ourstack.push("Ali");
        ourstack.push("Ahmad")
		// إخراج البيانات من المكدس
        while( !s.empty() ) {
            System.out.println(ourstack.pop());
        }
 
    }
 
}

ويوجد العديد من الدوال الأخرى ضمن الكلاس Stack في جافا.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

بداية نحتاج أن نقوم باستدعاء الصنف Stack من حزمة java.util

import java.util.Stack;  

ثم يمكننا انشاء كائن من الصنف Stack ثم نستطيع استخدام الدوال الخاصة ب Stack مثل push التي من خلالها نضيف عنصر الى stack أو الدالة empty التي تفحص هل Stack فارغ أم لاء وتسترجع قيمة boolean حيث تقوم بارجاع false اذا كانت تحتوي على عناصر والعكس صحيح, لنحاول شرح ذلك من خلال مثال

import java.util.Stack;  
public class StackExample  
{  
public static void main(String[] args)   
{  
Stack myStack = new Stack();  
boolean isEmpty = myStack.empty();  
System.out.println("Is the stack empty? " + isEmpty);  
myStack.push(1);  
myStack.push(2);   
System.out.println("All Elements in Stack: " + myStack);  
}  
}  

كما تلاحظ قمنا باستدعاء الصنف Stack, وقمت بانشاء كائن منه اسمه stk وقمت بفحص هل هو فارغ أم لا من خلال الدالة empty, وخزنت قيمة الدالة empty بداخل متغير اسمه result ومن ثم قمت بطباعة المتغير result, بعد ذلك قمت باضافة بعض العناصر الى Stack باستخدام الدالة push , بعد تنفيذ المثال سوف تكون النتيجة كالتالي

Is the stack empty? true
All Elements in Stack: [1, 2]

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

 

بتاريخ 11 ساعات قال محمد أبو عواد:

بداية نحتاج أن نقوم باستدعاء الصنف Stack من حزمة java.util


import java.util.Stack;  

ثم يمكننا انشاء كائن من الصنف Stack ثم نستطيع استخدام الدوال الخاصة ب Stack مثل push التي من خلالها نضيف عنصر الى stack أو الدالة empty التي تفحص هل Stack فارغ أم لاء وتسترجع قيمة boolean حيث تقوم بارجاع false اذا كانت تحتوي على عناصر والعكس صحيح, لنحاول شرح ذلك من خلال مثال


import java.util.Stack;  
public class StackExample  
{  
public static void main(String[] args)   
{  
Stack myStack = new Stack();  
boolean isEmpty = myStack.empty();  
System.out.println("Is the stack empty? " + isEmpty);  
myStack.push(1);  
myStack.push(2);   
System.out.println("All Elements in Stack: " + myStack);  
}  
} 

كما تلاحظ قمنا باستدعاء الصنف Stack, وقمت بانشاء كائن منه اسمه stk وقمت بفحص هل هو فارغ أم لا من خلال الدالة empty, وخزنت قيمة الدالة empty بداخل متغير اسمه result ومن ثم قمت بطباعة المتغير result, بعد ذلك قمت باضافة بعض العناصر الى Stack باستخدام الدالة push, بعد تنفيذ المثال سوف تكون النتيجة كالتالي


Is the stack empty? true
All Elements in Stack: [1, 2]

 

اعرف أنه يوجد صف جاهز لكن اريد تعريفه بشكل يدوي

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...