اذهب إلى المحتوى
  • 0

كيف يمكن اضافة الوظائف التالية الي stack باستخدام c++?

Salha Alhadad

السؤال

طباعة جملة تخبرنا بعدد العناصر الموجودة في stack. 

طباعة العناصر المتكرر في stack و عدد مرات تكرارها. 

طباعة عناصر stack  بحيث العنصر الاول هو الاخير، ثم طباعة العنصر الاخير هو الاول.. 

علما بان size =10.

تم التعديل في بواسطة Salha Alhadad
عدم تحديد لغة البرمجة
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

لمعرفة عدد العناصر ضمن المدس يكننا استدعاء التابع size للمكدس الذي تم تعريفه:

// تعيف مكدس
stack<int> mystack;

// إضافة عناضر باستخدام push
mystack.push(1);
mystack.push(8);
mystack.push(6);

// أضفنا العناصر 1, 8, 6

cout << mystack.size();  // 3

ضمن المكدس، لايمكننا الوصول إلا للعنصر الذي في القمة (أعلى المكدس) باستخدام التابع top.

لكي نقوم بحساب تكرار العناصر أو طباعة جميع العناصر، يتوجب علينا تفريغ المكدس لكي نستطيع المرور على جميع العناصر.

____

تكرار العناصر، يتوجب بناء بنية معطيات تمكننا من عد العناصر، مثل مصفوفة أو Map:

يمكن حساب التكرار للعناصر قبل إضافتها للمكدس، ويمكن كتابة دالة لإنقاض التكرارات بنفس الطريقة.

#include<bits/stdc++.h>
using namespace std;

// حساب التكرارات
map<int, int> freqMap;

// أكثر تكرار
int maxfreq = 0;

// حساب التكرارات
void push(int x)
{

	// تكرار of x
	int freq = freqMap[x] + 1;

	freqMap[x]= freq;

	// تعديل التكرار
	if (freq > maxfreq)
		maxfreq = freq;

}

int main()
{

	// إضافة العناصر للمكدس
	push(4);
	push(6);
	push(7);
	push(6);
	push(8);

}

لعرض عناصر المكدس بطريقة معكوسة حاول كتابة الشيفرة التالية:

  • نقوم بتعريف مكدس مؤقت
  • نفرغ المكدس الأول باستخدام التابع pop ونضيف العناصر للمكدس الثاني المؤقت
  • أصبح المكدس الثاني يحوي العناصر نفسها لكن بترتيب مقلوب
  • نفرغ المكدس الثاني باستخدام pop ونطبع العنصر و نضيفه للمكدس الأول
  • الآن المكدس الأول يحوي نفس العناصر بنفس الترتيب الأصلي، المكدس المؤقت فارغ بدون تخريب البيانات.
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...