تقوم فئة Java Stack بتوسيع فئة Vector. يتيح لك إنشاء عناصر جديدة ، وعرض عنصر في المكدس ، وتحديث عنصر في المكدس ، وحذف جميع العناصر من المكدس. تكدس البيانات بترتيب أول ما يرد أخيرًا (FILO). هذا يعني أنه يمكنك فقط إضافة أو إزالة العناصر من أعلى المكدس.

يحتوي هيكل بيانات المكدس على خمس طرق أساسية. ومع ذلك ، فإن فئة Java Stack لديها أيضًا إمكانية الوصول إلى أكثر من 40 طريقة أخرى ، والتي ترثها من فئة Vector.

إنشاء مكدس في جافا

فئة ستاك له مُنشئ واحد يسمح لك بإنشاء مكدس فارغ. يحتوي كل Stack على وسيطة نوع ، والتي تحدد نوع البيانات التي سيتم تخزينها.

يستورد java.util. كومة؛

عامصف دراسيرئيسي{
عامثابتةفارغرئيسي(سلسلة [] args){
// إنشاء مكدس
كومة العملاء = الجديد كومة();
}
}

يقوم الكود أعلاه بإنشاء بنية بيانات Stack تسمى عملاء الذي يخزن قيم السلسلة.

ملء كومة

إحدى الطرق الأساسية الخمس لفئة Stack هي يدفع() طريقة. يأخذ عنصرًا واحدًا له نفس نوع البيانات مثل المكدس ويدفع هذا العنصر إلى أعلى المكدس.

// ملء مكدس
customers.push ("جين دو") ؛
customers.push ("John Doe") ؛
customers.push ("باتريك ويليامز") ؛
customers.push ("بول سميث") ؛
instagram viewer

customers.push ("إريك رو") ؛
customers.push ("إيلا جونز") ؛
customers.push ("جيسيكا براون") ؛

يملأ الكود أعلاه حزمة العملاء بسبعة عناصر. يدفع كل عنصر جديد إلى أعلى المكدس. لذا ، فإن العنصر الموجود أعلى مجموعة العملاء هو جيسيكا براون. ويمكنك تأكيد ذلك باستخدام Stack نظرة خاطفة () طريقة. ال نظرة خاطفة () الطريقة لا تأخذ الحجج. تقوم بإرجاع الكائن أعلى المكدس دون إزالته.

// عرض الكائن أعلى المكدس
System.out.println (clients.peek ()) ؛

يقوم الكود أعلاه بإرجاع الإخراج التالي إلى وحدة التحكم:

جيسيكا براون

عرض العناصر في مكدس

بنية بيانات المكدس مقيدة تمامًا في كيفية السماح لك بالتفاعل مع بياناتها. يجب عليك استخدام Stack بشكل أساسي عبر العنصر الأعلى. ومع ذلك ، يمكنك أيضًا استخدام الأساليب الموروثة من فئة Vector للوصول إلى العناصر العشوائية. تتضمن هذه الطرق elementAt و removeElementAt.

أسهل طريقة للحصول على نظرة عامة حول محتويات Stack هي ببساطة طباعتها. قم بتمرير كائن Stack إلى System.out.println وستنتج طريقة Stack’s toString () ملخصًا رائعًا:

// عرض جميع عناصر المكدس
System.out.println (العملاء) ؛

يطبع الكود أعلاه الإخراج التالي إلى وحدة التحكم:

[جين دو ، جون دو ، باتريك ويليامز ، بول سميث ، إريك رو ، إيلا جونز ، جيسيكا براون]

البحث عن موضع عنصر في مكدس

إذا كنت تعرف عنصرًا في المكدس ، فيمكنك تحديد موضع الفهرس الخاص به أو موضعه بالنسبة إلى الجزء العلوي من المكدس. ال دليل ل() يأخذ الأسلوب عنصرًا في المكدس ويعيد موضع الفهرس الخاص به. ضع في اعتبارك أن Stack يبدأ في فهرسة عناصره عند الصفر.

// ابحث عن موضع مؤشر العنصر
System.out.println (Customers.indexOf ("Jane Doe")) ؛

يطبع الكود أعلاه الإخراج التالي إلى وحدة التحكم:

0

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

System.out.println (Customers.search ("Jane Doe")) ؛

يطبع الكود أعلاه الإخراج التالي إلى وحدة التحكم:

7

إذا قمت بتزويد ملف بحث() أو ال دليل ل() مع عنصر غير موجود في المكدس ، سيعيدون عنصرًا سلبيًا.

System.out.println (clients.search ("Elsa Doe")) ؛
System.out.println (Customers.indexOf ("Elsa Doe")) ؛

يطبع الكود أعلاه الإخراج التالي إلى وحدة التحكم:

-1
-1

تحديث العناصر في مكدس

يمكنك فقط معالجة عنصر أعلى المكدس. لذلك ، إذا كنت ترغب في تحديث عنصر غير موجود في الجزء العلوي من Stack ، فسيتعين عليك إظهار جميع العناصر الموجودة فوقه. ال البوب ​​() الطريقة هي إحدى طرق Stack الأساسية. ال البوب ​​() الطريقة لا تأخذ الحجج. يقوم بإزالة العنصر الموجود أعلى المكدس وإعادته.

// تحديث كائن
customers.pop () ؛
customers.pop () ؛
customers.push ("إيلا جيمس") ؛
customers.push ("جيسيكا براون") ؛
System.out.println (العملاء) ؛

يطبع الكود أعلاه الإخراج التالي إلى وحدة التحكم:

[جين دو ، جون دو ، باتريك ويليامز ، بول سميث ، إريك رو ، إيلا جيمس ، جيسيكا براون]

كما ترى من الإخراج ، يقوم الكود بتحديث لقب Ella إلى James. إنها تنطوي على عملية تنبثق العناصر من المكدس حتى تصل إلى الكائن الهدف. ثم ينبثق الكائن الهدف ؛ يقوم بتحديثه ؛ ويدفعه ، جنبًا إلى جنب مع العناصر التي كانت أعلى العنصر الهدف ، إلى المكدس. سيتعين عليك استخدام برنامج يقوم بعمليات مثل تلك المذكورة أعلاه ، في كل مرة ترغب في تحديث عنصر في Stack الخاص بك.

حذف عنصر من مكدس

لحذف عنصر واحد من بنية بيانات Stack ، يمكنك مرة أخرى استخدام طريقة pop (). إذا لم يكن العنصر الذي تريد حذفه في الأعلى ، فيمكنك إظهار العناصر في الأعلى حتى تصل إلى العنصر المطلوب.

حذف كل العناصر في مكدس

لحذف جميع العناصر من Stack ، يمكنك استخدام ملف جافا أثناء التكرار باستخدام طريقة pop () لحذف العناصر واحدًا تلو الآخر. ومع ذلك ، فإن النهج الأكثر كفاءة هو استخدام صافي() طريقة. ال صافي() الطريقة هي تلك التي ترثها فئة Stack من فئة Vector. لا يأخذ أي وسيطات ، ولا يُرجع شيئًا ، ولكنه يزيل ببساطة جميع العناصر داخل بنية البيانات المكدسة.

// حذف جميع العناصر في مكدس
customers.clear () ؛
System.out.println (clients.empty ()) ؛

يحذف الرمز أعلاه جميع العناصر الموجودة في مجموعة العملاء. ثم يستخدم ملف فارغة() طريقة للتحقق مما إذا كان المكدس فارغًا. ال فارغة() هي طريقة أساسية أخرى لفئة Java Stack Class. لا يأخذ أي وسيطات ويعيد قيمة منطقية. هذا الأسلوب يعود صحيحًا إذا كان المكدس فارغًا وخطأ بخلاف ذلك.

يطبع الكود أعلاه الإخراج التالي إلى وحدة التحكم:

حقيقي

تطبيقات عملية لهيكل البيانات المكدس

بنية البيانات المكدسة مقيدة للغاية. لا يوفر قدرًا كبيرًا من المرونة في معالجة البيانات مثل هياكل البيانات الأخرى. هذا يطرح السؤال: متى يجب عليك استخدام بنية البيانات المكدسة؟

تعتبر بنية بيانات Stack مناسبة تمامًا للتطبيقات التي تتطلب معالجة البيانات بترتيب عكسي. وتشمل هذه:

  • تطبيق يتحقق مما إذا كانت الكلمة متناظرة.
  • تطبيق يحول الأرقام العشرية إلى أرقام ثنائية.
  • التطبيقات التي تسمح للمستخدمين بالتراجع.
  • الألعاب التي تسمح للمستخدم بالعودة إلى الحركات السابقة ، مثل لعبة الشطرنج.