الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

stack using linked list without poniters

بدأه Luna Volver A salir في 6 مارس 2014 · 3 رد · 691 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني الكرام

ممكن تساعدوني في تصحيح هذا الكود

هذا كود استخدام المكدس في القوائم المتصلة بأستخدام المؤشرات و الوراثة هل لكم مساعدتي و تحويله بدون المؤشرات و الوراثة

ارجووووكم

#include < iostream.h >
#include < stdlib.h >
#include < stdio.h >

class Cell
{
friend class Stacker;
public:
   Cell(void *ptr, Cell *lst)
   {
      item = ptr;
      next = lst;
   }
private:
   void *item;
   Cell *next;
};

class Stacker
{
public:
   Stacker(void (* d)(void *)) { dispfn = d; head = NULL; }
   void  push(void *t)
   {
      Cell *ptr;
      if (t == NULL) return;
      Cell *h = new Cell(t, head);
      head = h;
   }
   void *pop()
   {
      if (head == NULL) return NULL;
      void *ptr = head;
      void *t = head->item;
      head = head->next;
      delete ptr;
      return t;
   }
   void display()
   {
     if (head == NULL) { cout << "(empty)\n";  return; }
     for (Cell *t=head ; t != NULL ; t=t->next) (dispfn)(t->item);
     printf("\n");
   }
   int   empty()  {  return head == NULL;  }
private:
   Cell *head;
   void (* dispfn)(void *);
};

void intdisplay(void *t)
{
   cout << *(int *)t << " ";
}

class IntStack
{
public:
   IntStack() { stk = new Stacker(intdisplay);  }
   void push(int data)
   {
      int *n = new int;
      *n = data;
      stk->push(n);
   }
   int pop()
   {
      void *ptr = stk->pop();
      if (ptr == NULL) return -1;
      return *(int *)ptr;
   }
   void display() { stk->display(); }
private:
   Stacker *stk;
};

void main()
{
   IntStack *s = new IntStack();
   int d;

   s->display();
   s->push(1);
   s->display();
   s->push(2);
   s->display();
   s->push(3);
   s->display();
   s->push(4);
   s->display();
   s->pop();
   s->display();
   s->pop();
   s->display();
   s->push(10);
   s->display();
   s->pop();
   s->display();
   s->pop();
   s->display();
   s->pop();
   s->display();
   s->pop();
   s->display();
   s->pop();
   s->display();
}

اررررررررررررررررررررررررجوووووووووووووووووووووووووووووووكمــــــــــــــــــــــــــــــــــــــــــــ

#2
اقتباس
هذا كود استخدام المكدس في القوائم المتصلة بأستخدام المؤشرات و الوراثة هل لكم مساعدتي و تحويله بدون المؤشرات و الوراثة

أولا: الكود لا يستخدم الوراثة على الإطلاق.

ثانيا: إستخدام المؤشرات أمر حيوي بذلك الكود و حذفها يعنى إعادة كتابته من جديد و الناتج سيكون برنامج محتلف عن الحالي، يعنى انت تطلب كتابة برنامج جديد.

ثالثا: إذا كنت درست الـ stack و فهمته و لديك خلفية و لو بسيطه بلغة C++/C ستعرف كيفية كتابة مثال بسيط للتطبيق على ما فهمته.

رابعا: إذا كان الأمر عسير الفهم عليك فبإمكانك البحث دخل القسم فإن لم تجد فسأل و ستجد العديد ممن يتقدم للإجابة.

 

أخى/أختى:

بقدر الكد تكتسب المعالي ... و من طلب العلا سهر الليالي

و من طلب العلا بغير كد ... أضاع العمر فى طلب المحال

 

 

و الله ولي التوفيق

1

مدونتي: C++ Tips and Tricks

#3
اقتباس

 

 

حدث خطأ

لقد وصلت إلى الحد الأقصى للنقاط الإيجابية لهذا اليوم

 

 

لافضّ فوك يااخي العزيز C++er

{ وَيَوْمَ تَقُومُ السَّاعَةُ يُقْسِمُ الْمُجْرِمُونَ مَا لَبِثُوا غَيْرَ سَاعَةٍ ۚ كَذَٰلِكَ كَانُوا يُؤْفَكُونَ () وَقَالَ الَّذِينَ أُوتُوا الْعِلْمَ وَالْإِيمَانَ لَقَدْ لَبِثْتُمْ فِي كِتَابِ اللَّهِ إِلَىٰ يَوْمِ الْبَعْثِ ۖ فَهَٰذَا يَوْمُ الْبَعْثِ وَلَٰكِنَّكُمْ كُنْتُمْ لَا تَعْلَمُونَ } الروم 55-56

#4
C++er كتب:

 

أخى/أختى:

بقدر الكد تكتسب المعالي ... و من طلب العلا سهر الليالي

و من طلب العلا بغير كد ... أضاع العمر فى طلب المحال

 

 

و الله ولي التوفيق

 

 و الله يا اخي

منذ اسبوع و انا ابحث و احاول

 

كما اني درست c++ , Java

و ايضا ايجيد لغه فيجوال بيسك نوعا ما

مواضيع مشابهة