תורים

דוגמא 1

שגרת המערכת הבאה עוברת על תור ומדפיסה את כל האיברים בו.

השגרה מקבלת את ראש התור.

void prnList(int list)

{

       int iIndex = firstid(list);

       int ps;

       disable(ps);

       printf("%10s%10s%10s\n", "PID", "ProcName","Prio");

       while (iIndex < NPROC)

       {

              printf("%10d%10s%10d\n", iIndex, proctab[iIndex].pname,

                     proctab[iIndex].pprio);

              iIndex = q[iIndex].qnext;

       }

       restore(ps);

}

דוגמא 2

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

ב-disable/restore.

int putfirst(int item, int list)

{

       struct qent   *hptr;        /* points to head entry    */

       struct qent   *mptr;        /* points to item entry    */

       hptr = &q[list];

       mptr = &q[item];

       mptr->qprev = list;

       mptr->qnext = hptr->qnext;

       q[hptr->qnext].qprev = item;

       hptr->qnext = item;

       return(item);

}

תגיות המסמך:

מאת: באסל

תודה

הסברתם את זה, כמו שאר הנושאים, באופן הכי ברור שיש.
שיתוף:
| עוד