עבור לתוכן

שאלה בנושא מחסנית ב C

Featured Replies

פורסם

היי יכולם

1. יש לי מערך של מבנים שכל מבנה כולל מספר ומחסנית , בזמן השוואה בין שני איברים במערך אני מכניסה למחסנית של האיבר הגדול את האיבר שקטן ממנו , אבל לפני זה אני צריכה לבדוק שהאיבר שאני מכניסה יותר גדול מהאיבר שכבר יש במחסנית (של הגדול). אני צריכה לעשות את זה בלי להוציא את האיבר שכבר יש לי במחסנית כי אני עדיין צריכה אותו שם להמשך התוכנית (להשוואות הבאות) . איך עושים את זה?

פורסם

בד"כ מספקים למחסנית פונקציית top שמאפשרת לראות מהו האיבר העליון בלי להוציא אותו.

פורסם
  • מחבר

אתה יכל לתת לי את הסינטקס שלה ?

פורסם

לא ממש. מחסנית היא לא חלק סטנדרטי משפת C, זה תלוי במימוש הספציפי של מחסנית שאת משתמשת בו.

פורסם
  • מחבר

typedef Element* Stack;

// initialization

Stack initStack(){

Stack st=initList();

return st;

}

// pop to stack

void* Pop(Stack st){

void* item=retriveFromList(st->next);

deleteFromList(st, st->next);

return item;

}

// top to stack

void* Top(Stack st){

return retriveFromList(st->next);

}

// push from stack

void Push(Stack st, void *item){

insertToList(st, item);

}

// is stack empty

int stackEmpty(Stack st)

{

return st->next==NULL;

}

// delete stack

void deleteStack(Stack st){

while(!stackEmpty(st))

Pop(st);

}

// copy stack & size of item in byte

Stack copyStack(Stack s, int sizeElement){

Stack tmp=initStack(), ast=initStack();

while(!stackEmpty(s))

Push(tmp, Pop(s));

while(!stackEmpty(tmp)){

void *x=Pop(tmp);

void *y=(void*)malloc(sizeElement);

memcpy(y, x, sizeElement);

Push(s, x);

Push(ast, y);

}

return ast;

}

#endif

פורסם

נו - בקוד שנתת יש פונקציית Top. תסתכלי על החתימה שלה ותביני איך משתמשים בה. אם זה לא ברור לך, תשווי אותה לחתימה של Pop ותחשבי איך משתמשים בה.

וכמו שנאמר מעליי - תערכי את ההודעה ושימי את הקוד בתוך טג קוד.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים