|
|
أدوات الموضوع | انواع عرض الموضوع |
رقم المشاركة : ( 1 )
|
|||||||||||
|
|||||||||||
stack using linked without pointers
السلام عليكم
اخواني الكرام في مشاركتي الاول معكم اتنمى ان تساعدوني في تحويل هذا الكود من مكدس باستخدام القائمة المتصلة (باستخدام المؤشرات و الوراثة) الى كود بدون الؤشرات و الوراثة #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(); } |
مواقع النشر (المفضلة) |
الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
|
|
Google Adsense Privacy Policy | سياسة الخصوصية لـ جوجل ادسنس
^-^ جميع آلمشآركآت آلمكتوبهـ تعبّر عن وجهة نظر صآحبهآ ,, ولا تعبّر بأي شكلـ من آلأشكآل عن وجهة نظر إدآرة آلمنتدى ~