PDA

View Full Version : یه سوال در مورد صف ها



nazi73
چهارشنبه 06 آذر 1392, 22:32 عصر
سلام

دوستان یه سوال داشتم ازتون در مورد صف های اولویت دار...

ببینید من می خوام یه برنامه ای رو بنویسم که با استفاده از صف های اولویت دار بیاد عملیات وارد کردن و حذف کردن عناصر رو انجام بده...

اما در مورد حذف عناصر کاری که می خوام انجام بدم اینه که بعد این که عناصر رو همراه با اولویتشون گرفتم، بیام یه جستجویی تو آرایه انجام بدم اونی که اولویتش از همه بیشتر بود بیام کنارش یه علامت (sign) بذارم مثلا 0... بعد اون یکی ها رو هم علامتش رو 1 بذارم.مثل این که حذف منطقی کردم. بعدش بیام اون خونه هایی که علامت خونه ی قبلیشون 0 هست رو یه خانه به سمت چپ شیفت بدم

این طوری هم اون عنصری که اولویتش بیشتر از همه بود حذف میشه و هم جای خالی تو آرایه وجود نداره دیگه. این کد رو ببینید:

#include<iostream>
#include<conio.h>
using namespace std;
#define SIZE 5 /* Size of Queue */
int f=0,r=-1; /* Global declarations */
typedef struct PRQ
{
int ele;
int pr;
int sign;
}PriorityQ;
PriorityQ PQ[SIZE];

//************************************************** *
void PQinsert(int elem, int pre)
{
int i; /* Function for Insert operation */
if( r==SIZE-1)
printf("\n\n Overflow!!!!\n\n");
else
{
i=r;
++r;

PQ[i+1].ele=elem;
PQ[i+1].pr=pre;
}
}


در مورد قسمت delete همین قدرشو تونستم بنویسم:

PriorityQ PQdelete()
{ /* Function for Delete operation */
PriorityQ p;

if(f > r)
{
printf("\n\nUnderflow!!!!\n\n");
p.ele=-1;p.pr=-1;
return(p);
}
else
{
.
.
.
.
.
}
}

میشه کمکم کنید اون چیزی که گفتم رو پیاده سازی کنم؟

hadi0x7c7
جمعه 08 آذر 1392, 10:10 صبح
شما برای پیاده سازی صف اولویت دار باید از داده ساختار heap استفاده کنید، البته با آرایه هم میشه ولی بهترینش heap هست.