164 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			164 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: stack
							 | 
						||
| 
								 | 
							
								localeTitle: كومة
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								## كومات
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`stack` واحدة من حاويات الأكثر استخدامًا في C ++. الحاوية عبارة عن بنية بيانات تخزن مجموعة من الكائنات ، بعضها في ترتيب ، وبعضها لا. تحتوي كل الحاويات على مجموعة مختلفة من الوظائف التي تسمح لك بالوصول إلى كائن (كائنات) في تلك المجموعة.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`std::stack` هو جزء من المكتبة القياسية C ++ (ومن هنا pred `std::` ويسمح لك بتخزين البيانات في ترتيب Last In First Out (LIFO). ملاحظة: **يجب أن تكون كافة الكائنات الموجودة داخل بنية تخزين من نفس نوع البيانات**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								يدخل نوع البيانات الذي تقوم بتخزينه داخل الكدسة داخل أقواس زاوية بجوار الكلمة الرئيسية للمكدس. على سبيل المثال ، إذا كنت ترغب في تخزين مجموعة من الأعداد الصحيحة ، فقد تكون `std::stack<int> stack_name`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### تكدس ليفو شرح
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								تسمح لك `stack` بالدفع والإبحار بترتيب معين. **دفع** يعني إدراج كائن في الجزء العلوي من المكدس. يعني " **Pop"** سحب آخر كائن مدرج من الجزء العلوي من المكدس. لذلك عندما تضغط عليه في الأعلى وعندما تطفو فإنك تستخرج آخر عنصر مدرج.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### عمليات المكدس
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								يدعم حاوية المكدس العمليات التالية:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*   إدفع
							 | 
						||
| 
								 | 
							
								*   فرقعة
							 | 
						||
| 
								 | 
							
								*   فارغة
							 | 
						||
| 
								 | 
							
								*   بحجم
							 | 
						||
| 
								 | 
							
								*   الى الخلف
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### إدفع
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								للسماح لك بإدراج عنصر جديد أعلى الرصة ، فوق العنصر العلوي الحالي.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `//Push operation in Stack 
							 | 
						||
| 
								 | 
							
								 #include <iostream>       // std::cout 
							 | 
						||
| 
								 | 
							
								 #include <stack>          // std::stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 int main () 
							 | 
						||
| 
								 | 
							
								 { 
							 | 
						||
| 
								 | 
							
								  std::stack<int> s; 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  s.push(1);    //Pushing 1 at top of the stack 
							 | 
						||
| 
								 | 
							
								  s.push(2);    //Pushing 2 at top of the stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  return 0; 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### أعلى
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								يسمح لك بالوصول إلى العنصر العلوي دون إزالته من مجموع رقائقك.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `//Top operation in Stack 
							 | 
						||
| 
								 | 
							
								 #include <iostream>       // std::cout 
							 | 
						||
| 
								 | 
							
								 #include <stack>          // std::stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 int main () 
							 | 
						||
| 
								 | 
							
								 { 
							 | 
						||
| 
								 | 
							
								  std::stack<int> s; 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  s.push(1);    //Pushing 1 at top of the stack 
							 | 
						||
| 
								 | 
							
								  s.push(2);    //Pushing 2 at top of the stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  std::cout<<s.top()<<'\n';     //Accessing the top of the stack 
							 | 
						||
| 
								 | 
							
								  std::cout<<s.top()<<'\n';     //Accessing the top of the stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  return 0; 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `Output: 
							 | 
						||
| 
								 | 
							
								 2 
							 | 
						||
| 
								 | 
							
								 2 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### فرقعة
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								يزيل العنصر الموجود أعلى الرصة ، مما يقلل بشكل فعال من حجم الرصة بمقدار واحد.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `//Pop operation in Stack 
							 | 
						||
| 
								 | 
							
								 #include <iostream>       // std::cout 
							 | 
						||
| 
								 | 
							
								 #include <stack>          // std::stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 int main () 
							 | 
						||
| 
								 | 
							
								 { 
							 | 
						||
| 
								 | 
							
								  std::stack<int> s; 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  s.push(1);    //Pushing 1 at top of the stack 
							 | 
						||
| 
								 | 
							
								  s.push(2);    //Pushing 2 at top of the stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  std::cout<<s.top()<<'\n';   //Accessing the top of the stack 
							 | 
						||
| 
								 | 
							
								  s.pop();                    //Removing element from the top of stack 
							 | 
						||
| 
								 | 
							
								  std::cout<<s.top()<<'\n';   //Accessing the top of the stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  return 0; 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `Output: 
							 | 
						||
| 
								 | 
							
								 2 
							 | 
						||
| 
								 | 
							
								 1 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### بحجم
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								يرجع عدد العناصر في `stack` .
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `//Size operation in Stack 
							 | 
						||
| 
								 | 
							
								 #include <iostream>       // std::cout 
							 | 
						||
| 
								 | 
							
								 #include <stack>          // std::stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 int main () 
							 | 
						||
| 
								 | 
							
								 { 
							 | 
						||
| 
								 | 
							
								  std::stack<int> s; 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  s.push(1);    //Pushing 1 at top of the stack 
							 | 
						||
| 
								 | 
							
								  s.push(2);    //Pushing 2 at top of the stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  std::cout<<s.size()<<'\n';  //Showing the size of the stack 
							 | 
						||
| 
								 | 
							
								  s.pop();                    //Removing element from the top of stack 
							 | 
						||
| 
								 | 
							
								  std::cout<<s.size()<<'\n';  //Showing the size of the stack 
							 | 
						||
| 
								 | 
							
								  s.pop();                    //Removing element from the top of stack 
							 | 
						||
| 
								 | 
							
								  std::cout<<s.size()<<'\n';  //Showing the size of the stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  return 0; 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `Output: 
							 | 
						||
| 
								 | 
							
								 2 
							 | 
						||
| 
								 | 
							
								 1 
							 | 
						||
| 
								 | 
							
								 0 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### فارغة
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								إرجاع ما إذا كانت `stack` فارغة ، أي ما إذا كان حجم رصة الورق لديك صفرًا أم لا. تقوم بإرجاع `true` إذا كان حجم مكدس 0 else بإرجاع `false`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `//Empty operation in Stack 
							 | 
						||
| 
								 | 
							
								 #include <iostream>       // std::cout 
							 | 
						||
| 
								 | 
							
								 #include <stack>          // std::stack 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 int main () 
							 | 
						||
| 
								 | 
							
								 { 
							 | 
						||
| 
								 | 
							
								  std::stack<int> s; 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  s.push(1); 
							 | 
						||
| 
								 | 
							
								  s.push(2); 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  while(s.empty() != false){ 
							 | 
						||
| 
								 | 
							
								      std::cout<<s.top()<<'\n'; 
							 | 
						||
| 
								 | 
							
								      s.pop(); 
							 | 
						||
| 
								 | 
							
								  } 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  std::cout<<"Out of loop"<<'\n'; 
							 | 
						||
| 
								 | 
							
								  return 0; 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `Output: 
							 | 
						||
| 
								 | 
							
								 2 
							 | 
						||
| 
								 | 
							
								 1 
							 | 
						||
| 
								 | 
							
								 Out of loop 
							 | 
						||
| 
								 | 
							
								`
							 |