CodeGym /جاوا بلاگ /Random-UR /جاوا اسٹیک 101: اسٹیک کلاس میں داخل ہونا
John Squirrels
سطح
San Francisco

جاوا اسٹیک 101: اسٹیک کلاس میں داخل ہونا

گروپ میں شائع ہوا۔
جاوا میں اسٹیک ایک ڈیٹا ڈھانچہ ہے، بالکل ایک قطار، صف، منسلک فہرست، یا درخت کی طرح ۔ جہاں یہ دوسروں سے مختلف ہے وہ یہ ہے کہ جاوا اسٹیک Last In, First Out (LIFO) اصول پر مبنی ہے۔ اس کا مطلب یہ ہے کہ جب آپ اسٹیک سے کسی عنصر کو شامل کرنے اور ہٹانے کے لیے دو کمانڈز استعمال کرتے ہیں، تو آپ جس کو پہلے ہٹاتے ہیں وہ ہمیشہ آپ کے شامل کردہ آخری ہوگا۔ آئیے جاوا اسٹیک کلاس کو قریب سے دیکھتے ہیں۔

جاوا اسٹیک کلاس کو تلاش کرنا

جاوا اسٹیک کلاس ویکٹر کلاس کی توسیع ہے ، جو خود فہرست کلاس کو بڑھاتی ہے۔ چونکہ ویکٹر متغیر ہوتے ہیں اور اندر کے عناصر کے مطالبات کے ساتھ بڑھتے اور سکڑ سکتے ہیں، اسٹیک ایس مانگ کے مطابق سائز بھی بدل سکتا ہے۔ ویکٹر کلاس کی توسیع پانچ آپریشنز کا اضافہ کرتی ہے جو ویکٹر کو اسٹیک میں تبدیل کرتی ہے ۔ یہ پانچ آپریشن ہیں:
  • .push(E آئٹم) - ایک عنصر کو اسٹیک کے اوپری حصے پر رکھتا ہے۔
  • .pop() - اسٹیک کے اوپری حصے میں موجود عنصر کو ہٹاتا ہے اور اسے فنکشن کی قدر کے طور پر واپس کرتا ہے۔
  • .peek() - اسٹیک کے اوپری حصے میں موجود عنصر کو ہٹائے بغیر دیکھتا ہے۔
  • .empty() - بولین فنکشن جانچنے کے لیے کہ آیا اسٹیک خالی ہے یا نہیں۔ 0 یا 1 لوٹاتا ہے۔
  • .search(Object o) - o کو تلاش کرتا ہے اور اس کی پوزیشن لوٹاتا ہے۔ قدر 1 پر مبنی ہے، 0 پر مبنی نہیں۔
Stack ان تمام طریقوں کو بھی وراثت میں ملا ہے جو Vector کا حصہ ہیں ، بشمول، toString() , contains() , indexOf() اور lastElement() ۔ جاوا اسٹیک 101: اسٹیک کلاس میں داخل ہونا - 1

جاوا اسٹیک کی مثال کوڈ کرنا

اب جب کہ ہم Stack کے افعال کو جانتے ہیں ، آئیے جاوا اسٹیک کی مثال کو کوڈ کرتے ہیں۔ اسٹیک s ڈیٹا کو سنبھالنے کے لیے بہت مفید ہے جسے عارضی طور پر ذخیرہ کیا جانا چاہیے اور جلد بازیافت کرنا چاہیے۔ چونکہ اسٹیک LIFO ہے، یہ درخت کے ڈیٹا ڈھانچے کو دریافت کرتے وقت نوڈ ٹراورسل کے لیے غیر معمولی طور پر مفید ہے۔ اس سے پہلے کہ ہم ان سب میں داخل ہوں، آئیے ایک بنیادی اسٹیک بنائیں۔ اسٹیک کو نافذ کرنے کا کوڈ درج ذیل ہے:
import java.util.*;

class Main {
  public static void main(String[] args) {
    Stack<Integer> stackExample = new Stack<Integer>();
خالی اسٹیک بنانے کے لیے آپ کو بس اتنا ہی کرنا ہے ۔ آپ اسے استعمال کرکے ڈیٹا کی قسم کا اعلان کیے بغیر صرف اس کا اعلان کرسکتے ہیں:
Stack example = new Stack();
یاد رکھیں کہ چونکہ Stack s متغیر ہوتے ہیں، جیسا کہ ہم عناصر کو اسٹیک پر دبائیں گے، یہ خود بخود سائز میں ایڈجسٹ ہو جائے گا۔ اب دیکھتے ہیں کہ Stack فنکشنز کو کیسے استعمال کیا جائے۔

جاوا اسٹیک کا نفاذ

آئیے دیکھتے ہیں کہ ان پانچ طریقوں کو کیسے استعمال کیا جائے جو ہم نے مختصراً پہلے دریافت کیے تھے۔ جاوا اسٹیک کے نفاذ کو یاد رکھنا آسان ہے اگر آپ اسے پلیٹوں کے اسٹیک کے طور پر سوچتے ہیں۔ آپ پلیٹوں کو اسٹیک پر رکھتے ہیں، لیکن پلیٹ حاصل کرنے کے لیے، آپ نیچے نہیں جاتے، آپ کو اوپر سے ایک مل جاتی ہے۔ آخری جو آپ پہنتے ہیں وہ پہلا ہے جسے آپ اتارتے ہیں۔ stackExample کے ساتھ ہماری پچھلی مثال کو بڑھاتے ہوئے ، افعال حسب ذیل ہیں:

دھکا

// pushing integers onto the Stack
    stackExample.push(5);
    stackExample.push(10);
اس مقام پر، ہم دوسرے فنکشنز کو اس طرح دکھانے جا رہے ہیں جیسے ہم نے ان دونوں انٹیجرز کو جاوا اسٹیک مثال پر ہر بار دھکیل دیا ہو۔

پاپ

//popping integers off of the Stack
System.out.println(stackExample.pop());
System.out.println(stackExample.pop());
آؤٹ پٹ:

10
5

خالی ہے

اب، ہم کہتے ہیں کہ آپ اسٹیک سے تمام عناصر کو ہٹانا چاہتے ہیں لیکن آپ کو یقین نہیں ہے کہ وہاں کتنے عناصر ہیں۔ آپ Boolean.isEmpty() فنکشن کو پیشگی شرط کے ساتھ جوڑ سکتے ہیں جبکہ Stack سے تمام عناصر کو پاپ کرنے کے لیے لوپ کریں ۔ دیکھیں کہ یہ جاوا اسٹیک پر عمل درآمد کیسے ہوتا ہے۔
while(!stackExample.isEmpty()) {
  System.out.println(stackExample.pop());
}
آؤٹ پٹ

10
5

جھانکنا

ہم اسٹیک پر اگلی آئٹم کو ہٹائے بغیر اس پر ایک نظر ڈالنے کے لیے جاوا میں .peek() کو اسٹیک نفاذ کے طور پر استعمال کر سکتے ہیں۔
System.out.println(stackExample.peek());
آؤٹ پٹ

10
اگر ہم اسٹیک کو پاپ اور پرنٹ کرتے ہیں تو یہ 10 اور 5 واپس آجائے گا کیونکہ 10 ابھی بھی اسٹیک پر ہے۔ ہم نے صرف اسے دیکھا، ہم نے اسے پاپ فنکشن سے نہیں ہٹایا۔ peek فنکشن جاوا میں Stack s کے لیے ایک بہترین ٹول ہے۔

تلاش کریں۔

اگر ہم ایک مخصوص عنصر کو تلاش کرنا چاہتے ہیں، تو جاوا میں اسٹیک کا نفاذ .search(e) کا استعمال کرتا ہے۔ اسے تلاش کرنے کے لیے.
System.out.println(stackExample.search(5));
آؤٹ پٹ

2
یاد رکھیں کہ اس کی وجہ یہ ہے کہ ہم اسٹیک کے اوپری حصے سے گنتے ہیں اور جاوا اسٹیک کا آغاز 1 سے ہوتا ہے، نہ کہ 0 ایک Array کی طرح ۔ لہذا، اسٹیک کو دیکھتے ہوئے، یہ (10) --> (5) ہے، اور 5 نمبر 2 پر ہے۔ اگر آپ کسی ایسے عنصر کو تلاش کرنے کی کوشش کرتے ہیں جو Stack میں نہیں ہے ، تو آپ کو آؤٹ پٹ کے طور پر -1 ملے گا۔

تکرار کرنا

کسی بھی مجموعے کے ساتھ کام کرتے وقت، ایسے وقت ہوسکتے ہیں جب آپ کو متعدد عناصر کو تلاش کرنے کی ضرورت ہو۔ پیچیدگی کو بچانے اور اسٹیک کے ذریعے متعدد بار تلاش کرنے کے لیے ، آپ تکرار کا استعمال کر سکتے ہیں۔ چونکہ جاوا میں اسٹیک لسٹ کلاس کو بڑھاتا ہے، اس لیے اعادہ کرنے کے لیے کئی آپشنز موجود ہیں۔ سب سے آسان میں سے ایک صرف ListIterator فنکشن کا استعمال کرنا ہے۔ ListIterator اس لحاظ سے اچھا ہے کہ یہ آپ کو .hasPrevious() یا .hasNext() کا استعمال کرتے ہوئے اوپر سے نیچے یا نیچے سے اوپر تک اسٹیک کو عبور کرنے دیتا ہے ۔ یہاں یہ کیسا لگتا ہے:
ListIterator<Integer> exampleIterator = stackExample.listIterator(stackExample.size());

  while (exampleIterator.hasPrevious()) {
    int iteration = exampleIterator.previous();
    System.out.println(iteration);
  }
آؤٹ پٹ

10
5
اس بات کو ذہن میں رکھیں کہ جب آپ جاوا میں Stack s کے ذریعے اعادہ کرتے ہیں، تو آپ اس میں سے کوئی عنصر نہیں ہٹاتے ہیں۔ تکرار کرنا بنیادی طور پر آپ کو اسٹیک میں ہر عنصر کو ترتیب سے جھانکنے کی اجازت دیتا ہے۔ جب آپ ایسا کرتے ہیں، تو آپ ان مقامات کی تلاش کر سکتے ہیں جہاں کچھ عناصر موجود ہیں اور پھر ان میں سے جوڑ توڑ کر سکتے ہیں۔ اگر ضرورت ہو تو آپ ان کو شمار، حذف، یا تبدیل بھی کر سکتے ہیں۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION