Shuning uchun C # da stek ham xuddi shu tarzda ishlaydi. Elementlar stakka bir-birining ustiga joylashtiriladi. Stekka element qo'shish jarayoni surish operatsiyasi deyiladi. Elementni stakadan olib tashlash uchun stackning eng yuqori qismini ham olib tashlashingiz mumkin. Ushbu operatsiya pop deb nomlanadi.
Keling, Stack to'plami uchun mavjud bo'lgan operatsiyalarni batafsil ko'rib chiqamiz.
Stack Stack Data turi yordamida yaratiladi. "Yangi" kalit so'zi Stack ob'ektini yaratish uchun ishlatiladi. Keyin ob'ekt st o'zgaruvchisiga beriladi.
Stack st = new Stack()
Stekka elementlarni qo'shish
Bosish usuli elementni stakka qo'shish uchun ishlatiladi. Bayonotning umumiy sintaksisi quyida keltirilgan.
Stack.push(element)
Stekdan elementlarni olib tashlash
Elementni stakka olib tashlash uchun pop usuli qo'llaniladi. Pop operatsiyasi to'plamning eng yuqori elementini qaytaradi. Bayonotning umumiy sintaksisi quyida keltirilgan
Stack.pop()
Graf
Ushbu xususiyat Stekdagi narsalar sonini olish uchun ishlatiladi. Quyida ushbu bayonotning umumiy sintaksisini keltiramiz.
Stack.Count
O'z ichiga oladi
Ushbu usul Stack-da element mavjudligini ko'rish uchun ishlatiladi. Quyida ushbu bayonotning umumiy sintaksisini keltiramiz. Agar element mavjud bo'lsa, bayonot to'g'ri keladi, aks holda u false qiymatini qaytaradi.
Stack.Contains(element)
Keling, buni kod darajasida ishlashini ko'rib chiqaylik. Quyida keltirilgan barcha kodlar bizning Konsol dasturiga yoziladi. Kod Program.cs faylimizga yoziladi.
Quyidagi dasturda biz yuqorida aytib o'tilgan usullardan qanday foydalanishimiz mumkinligini ko'rish uchun kod yozamiz.
1-misol
Ushbu misolda biz ko'rib chiqamiz
Stek qanday yaratiladi.
Stek elementlarini qanday ko'rsatish va Count va Contain usullaridan foydalanish.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
class Program
{
static void Main(string[] args)
{
Stack st = new Stack();
st.Push(1);
st.Push(2);
st.Push(3);
foreach (Object obj in st)
{
Console.WriteLine(obj);
}
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("The number of elements in the stack " +st.Count);
Console.WriteLine("Does the stack contain the elements 3 "+st.Contains(3));
Console.ReadKey();
}
}
}
Kodni tushuntirish: -
Birinchi qadam Stackni e'lon qilish uchun ishlatiladi. Bu erda biz "st" ni bizning stek elementlarini ushlab turish uchun o'zgaruvchi sifatida e'lon qilamiz.
Keyinchalik, biz stackga 3 ta element qo'shamiz. Har bir element Push usuli yordamida qo'shiladi.
Endi ketma-ketlik elementlariga massivlar ro'yxati kabi indeks holati orqali kirish imkoni bo'lmagani uchun, biz stek elementlarini ko'rsatish uchun boshqa yondashuvdan foydalanishimiz kerak. Object (obj) - bu vaqtincha o'zgaruvchidir, u stekning har bir elementini ushlab turish uchun e'lon qilinadi. Keyin biz har bir elementni ko'rib chiqish uchun foreach iborasidan foydalanamiz. Har bir stek elementi uchun obj o'zgaruvchiga qiymat beriladi. Keyin konsolga qiymatni ko'rsatish uchun Console.Writeline buyrug'idan foydalanamiz.
Stekdagi narsalar sonini olish uchun Count xususiyatidan (st.count) foydalanmoqdamiz. Ushbu xususiyat raqamni qaytaradi. Keyin biz ushbu qiymatni konsolga ko'rsatamiz.
Keyin biz o'z ichiga olgan usulni ishlatib, 3 qiymati bizning to'plamimizda mavjudligini tekshiramiz. Bu haqiqiy yoki noto'g'ri qiymatni qaytaradi. Keyin biz ushbu qaytish qiymatini konsolga namoyish qilamiz.
Chiqadi:
Chiqishdan biz stek elementlari namoyish etilishini ko'rishimiz mumkin. Bundan tashqari, True qiymati stackda 3 qiymati aniqlanganligini ko'rsatish uchun ko'rsatiladi.
Izoh: Siz avval stekka surilgan oxirgi element ko'rsatilishini sezdingiz. Bu to'plamning eng yuqori elementi. Stek elementlari soni ham chiqishda ko'rsatilgan.
2-misol
Endi "olib tashlash" funksiyasini ko'rib chiqamiz. Biz stakdan eng yuqori elementni olib tashlash uchun zarur bo'lgan kodni ko'rib chiqamiz.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
class Program
{
static void Main(string[] args)
{
Stack st = new Stack();
st.Push(1);
st.Push(2);
st.Push(3);
st.Pop();
foreach (Object obj in st)
{
Console.WriteLine(obj);
}
Console.ReadKey();
}
}
}
Kodni tushuntirish: -
Bu erda biz elementni stakdan olib tashlash uchun ishlatiladigan pop usulini chiqaramiz.
Agar yuqoridagi kod to'g'ri kiritilsa va dastur ishga tushirilsa, quyidagi chiqish ko'rsatiladi.
Chiqadi:
3-element stekdan olib tashlanganligini ko'rishimiz mumkin.
Xulosa
Stek birinchi chiqarilgan birinchi kontseptsiyaga asoslanadi. Elementni stekka qo'shish jarayoni surish operatsiyasi deb ataladi. Stekka elementni olib tashlash operatsiyasi pop operatsiyasi deb ataladi.
Kirish
Stek - bu LIFO (birinchi bo'lib oxirgi) ma'lumotlar tuzilishi. Stek - bu narsalar to'plami, deb o'ylang, u erda siz stekka qo'shgan har qanday narsa yuqori qismga joylashtiriladi va agar siz biror narsani olib tashlashingiz kerak bo'lsa, u yuqoridan olib tashlanadi. Plitalar to'plami yoki kitoblar to'plami - bu suyakka oid ikkita keng tarqalgan misol.
Ushbu qo'llanmada biz C # da Stack <> sinfidan qanday foydalanishni bilib olamiz. Biz qanday qilib Stack yaratish va uning Push, Pop va boshqa usullaridan qanday foydalanishni ko'rib chiqamiz.
Stack bu System.Collection.Generic nomlar maydonida aniqlangan to'plam, bu erda T stekdagi elementlarning turini ko'rsatgan.
Stek yarating
Stack <> sinf konstruktorlari quyidagicha ko'rinadi:
Yig'indagi narsalarni hisoblash
Stack sinfining Count xususiyati stekdagi elementlar sonini qaytaradi. Quyidagi kod misoli turli xil usullardan foydalangan holda uchta to'plamni hosil qiladi va Count xususiyatidan foydalanib, bu to'plamlardagi narsalar sonini qaytaradi.
namespace Stack {
classProgram {
staticvoid Main(string[] args) {
Stack < string > stack1 = newStack < string > ();
string[] str = {
"MCA",
"BCA",
"BBA",
"MBA",
"MTech"
};
Stack < string > stack2 = newStack < string > (str);
Stack < string > stack3 = newStack < string > (10);
Console.WriteLine("The elements in the stack1 are:" + stack1.Count());
Console.WriteLine("The elements in the stack2 are:" + stack2.Count());
Console.WriteLine("The elements in the stack3 are:" + stack3.Count());
}
}
}
Chiqish quyidagicha ko'rinadi:
C # -dagi stekka narsalarni qo'shish
Push () usuli stakka (surish) elementini qo'shish uchun ishlatiladi. Element stackning yuqori qismiga qo'shiladi.
Quyidagi kod misolida narsalarni stekka qo'shish uchun Push usulini qanday ishlatish kerakligi ko'rsatilgan.
namespace Stack {
classProgram {
staticvoid Main(string[] args) {
Stack < string > stack1 = newStack < string > ();
string[] str = {
"MCA",
"BCA",
"BBA",
"MBA",
"MTech"
};
Stack < string > stack2 = newStack < string > (str);
Stack < string > stack3 = newStack < string > (10);
stack1.Push("************");
stack1.Push("MCA");
stack1.Push("MBA");
stack1.Push("BCA");
stack1.Push("BBA");
stack1.Push("***********");
stack1.Push("**Courses**");
stack1.Push("***********");
Console.WriteLine("The elements in the stack1 are as:");
foreach(string s in stack1) {
Console.WriteLine(s);
}
Console.WriteLine("The elements in the stack2 are as:");
foreach(string s in stack2) {
Console.WriteLine(s);
}
stack3.Push("one");
stack3.Push("Two");
Console.WriteLine("The elements in the stack3 are as:");
foreach(string s in stack3) {
Console.WriteLine(s);
}
}
}
}
Chiqish quyidagicha ko'rinadi:
C # -dagi stekdan narsalarni olib tashlash
Pop () usuli elementlarni stekdan olib tashlash uchun ishlatiladi. Pop () usuli eng yuqori elementni stekdan olib tashlaydi.
Quyidagi kod misolida 3 ta elementni olib tashlash uchun uch marta Pop () usuli qo'llaniladi.
namespace Stack {
classProgram {
staticvoid Main(string[] args) {
Stack < string > stack1 = newStack < string > ();
stack1.Push("************");
stack1.Push("MCA");
stack1.Push("MBA");
stack1.Push("BCA");
stack1.Push("BBA");
stack1.Push("***********");
stack1.Push("**Courses**");
stack1.Push("***********");
Console.WriteLine("The elements in the stack1 are as:");
foreach(string s in stack1) {
Console.WriteLine(s);
}
//For remove/or pop the element pop() method is used
stack1.Pop();
stack1.Pop();
stack1.Pop();
Console.WriteLine("After removal/or pop the element the stack is as:");
//the element that inserted in last is remove firstly.
foreach(string s in stack1) {
Console.WriteLine(s);
}
}
}
}
Chiqish quyidagicha ko'rinadi:
C # -dagi stekdan narsalarni oling
Peek () usuli Stack ning eng yuqori elementini olib tashlamasdan qaytaradi. Quyidagi kod parchasi stack elementlarini o'qiydi va tarkibni aks ettiradi.
namespace Stack {
classProgram {
staticvoid Main(string[] args) {
Stack < string > stack1 = newStack < string > ();
stack1.Push("************");
stack1.Push("MCA");
stack1.Push("MBA");
stack1.Push("BCA");
stack1.Push("BBA");
stack1.Push("***********");
stack1.Push("**Courses**");
stack1.Push("***********");
Console.WriteLine("The elements in the stack1 are as:");
foreach(string s in stack1) {
Console.WriteLine(s);
}
//The first peek element is find by peek() method
//peek method gives the element that located at the top of the stack
Console.WriteLine("The peek element is:" + stack1.Peek());
stack1.Pop();
Console.WriteLine("The nest peek element is:" + stack1.Peek());
}
}
}
Chiqish quyidagicha ko'rinadi
C # Stack kodining misoli
Bu erda Stack sinfidan va uning C # usullaridan foydalanishning ba'zi kodlari keltirilgan. Contain () usuli elementni stek ichida topsa, uni aniqlaydi va qaytaradi. Quyidagi misol Contain usulidan foydalanadi.
namespace Stack {
classProgram {
staticvoid Main(string[] args) {
Stack < string > stack1 = newStack < string > ();
stack1.Push("************");
stack1.Push("MCA");
stack1.Push("MBA");
stack1.Push("BCA");
stack1.Push("BBA");
stack1.Push("***********");
stack1.Push("**Courses**");
stack1.Push("***********");
Console.WriteLine("The elements in the stack1 are as:");
foreach(string s in stack1) {
Console.WriteLine(s);
}
Console.WriteLine("The element MCA contain in the stack " + stack1.Contains("MCA"));
Console.WriteLine("The element BCA contain in the stack " + stack1.Contains("BCA"));
Console.WriteLine("The element MTech contain in the stack " + stack1.Contains("MTech"));
}
}
}
Chiqish quyidagicha ko'rinadi:
St # ustida ishlash C #
Stack ning Clear () usuli barcha elementlarni to'plamdan olib tashlaydi. Quyidagi kod parchasi Clear () usulidan foydalanadi va stekdagi barcha elementlarni olib tashlaydi.
namespace Stack {
classProgram {
staticvoid Main(string[] args) {
Stack < string > stack1 = newStack < string > ();
stack1.Push("************");
stack1.Push("MCA");
stack1.Push("MBA");
stack1.Push("BCA");
stack1.Push("BBA");
stack1.Push("***********");
stack1.Push("**Courses**");
stack1.Push("***********");
Console.WriteLine("The element in the stack are:" + stack1.Count());
Console.WriteLine("The elements in the stack1 are as:");
foreach(string s in stack1) {
Console.WriteLine(s);
}
//clear() method remove/or clear all the elements from the stack
stack1.Clear();
Console.WriteLine("After apply the clear method the elements in the stack are:" + stack1.Count());
}
}
}
Chiqish quyidagicha ko'rinadi:
C # - to'plami
Stack - bu elementlarni LIFO uslubida saqlaydigan maxsus kollektsiya turi (Last In First Out). C # umumiy Stack va umumiy bo'lmagan Stack to'plam sinflarini o'z ichiga oladi. Umumiy Stack to'plamidan foydalanish tavsiya etiladi.
Stack vaqtinchalik ma'lumotlarni LIFO uslubida saqlash uchun foydalidir va siz uning qiymatini olgandan keyin elementni o'chirishingiz mumkin.
Stek xususiyatlari
Stack - bu birinchi bo'lib chiqarilganlar to'plami.
U System.Collection.Generic nom maydoniga kiradi.
Stek belgilangan tipdagi elementlarni o'z ichiga olishi mumkin. U kompilyatsiya vaqtini tekshirishni ta'minlaydi va boks qutisidan chiqarib bo'lmaydi, chunki u umumiydir.
Elementlarni Push () usuli yordamida qo'shish mumkin. To'plam-initsializator sintaksisidan foydalanib bo'lmaydi.
Pop () va Peek () usullari yordamida elementlarni olish mumkin. Bu indeksatorni qo'llab-quvvatlamaydi.
Yig'ma yaratish
Saqlashi mumkin bo'lgan elementlar turi uchun parametr parametrini ko'rsatish orqali Stack ob'ektini yaratishingiz mumkin. Quyidagi misol Push () usuli yordamida Stack da elementlarni yaratadi va qo'shadi. Stack null (mos yozuvlar turlari uchun) va takrorlanadigan qiymatlarga ruxsat beradi.
Stack myStack = new Stack();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
foreach (var item in myStack)
Console.Write(item + ","); //prints 4,3,2,1,
Quyida ko'rsatilgandek qatordan Stack yaratishingiz mumkin.
int[] arr = new int[]{ 1, 2, 3, 4};
Stack myStack = new Stack(arr);
foreach (var item in myStack)
Console.Write(item + ","); //prints 4,3,2,1,
Stack Xususiyatlari va usullari:
Property
|
Usage
|
Count
|
Returns the total count of elements in the Stack.
|
Method
|
Usage
|
Push(T)
|
Inserts an item at the top of the stack.
|
Peek()
|
Returns the top item from the stack.
|
Pop()
|
Removes and returns items from the top of the stack.
|
Contains(T)
|
Checks whether an item exists in the stack or not.
|
Clear()
|
Removes all items from the stack.
|
Count Stack-dagi elementlarning umumiy sonini qaytaradi.
Usuldan foydalanish
Push (T) to'plamni yuqori qismiga qo'shib qo'yadi.
Peek () stekdan yuqori elementni qaytaradi.
Pop () Stekning yuqori qismidagi narsalarni olib tashlaydi va qaytaradi.
Tarkibida (T) elementning stakda mavjudligini yoki yo'qligini tekshiradi.
Clear () barcha elementlarni to'plamdan olib tashlaydi.
Pop ()
Pop () usuli oxirgi elementni qaytaradi va uni stekdan olib tashlaydi. Agar stek bo'sh bo'lsa, u holda InvalidOperationException -ni tashlaydi. Shunday qilib, har doim Pop () usulini chaqirishdan oldin stekdagi elementlar sonini tekshiring.
Stack myStack = new Stack();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
Console.Write("Number of elements in Stack: {0}", myStack.Count);
while (myStack.Count > 0)
Console.Write(myStack.Pop() + ",");
Console.Write("Number of elements in Stack: {0}", myStack.Count);
Try it
Output:
Number of elements in Stack: 4
4,3,2,1,
Number of elements in Stack: 0
Do'stlaringiz bilan baham: |