Reham Numan نشر 4 يونيو 2021 أرسل تقرير نشر 4 يونيو 2021 كيف يمكننا تحقيق المكدس في جافا ؟ ارجو المساعدة اقتباس
1 Ali Haidar Ahmad نشر 4 يونيو 2021 أرسل تقرير نشر 4 يونيو 2021 يمكن تحقيقه باستخدام المصفوفات (سافترض أن لديك معرفة نظرية بسيطة حوله): المكدس عبارة عن نموذج خاص لتخزین البیانات واستخراجها بآلیة الداخل أولاً الخارج أخراً أو الداخل أخيراً يخرج أولاً 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 في جافا. 2 اقتباس
0 محمد أبو عواد نشر 4 يونيو 2021 أرسل تقرير نشر 4 يونيو 2021 بداية نحتاج أن نقوم باستدعاء الصنف 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] 1 اقتباس
0 Reham Numan نشر 4 يونيو 2021 الكاتب أرسل تقرير نشر 4 يونيو 2021 بتاريخ 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] اعرف أنه يوجد صف جاهز لكن اريد تعريفه بشكل يدوي اقتباس
السؤال
Reham Numan
كيف يمكننا تحقيق المكدس في جافا ؟ ارجو المساعدة
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.