PDA

View Full Version : کمک در مورد صف دو سره deque



mohammad_68
دوشنبه 09 آذر 1388, 13:28 عصر
من برای برنامه پارکینگ به کد صف دو طرفه نیاز دارم. این یکی رو پیدا کردم ولی یه مشکلی داره که اگه عملی نشون بدم بهتر منظورمو می فهمید :لبخندساده: :
اول این یه تیکه از کد منه :


class deque {
int *data;int size,end,begin;
public:
deque(int s){
data = new int[s];size = s;end=begin=0;
}
bool isfull(){
if (begin == end + 1) return true;
if ((end == size - 1) && (begin == 0)) return true;
return false;
}
void AddRear(int x) {
if (isfull()) {
cout << "can't push back" << endl;
return;
}
data[end++] = x;
if (end == size) end = 0;
}
int doprint(){
for(int i=0;i<size;i++)
cout << data[i] << "\n";
return 0;
}
int main(){
int i=1;
deque DQ(3);
DQ.AddRear(1);DQ.AddRear(2);DQ.AddRear(3);
DQ.doprint();
}


ولی در نهایت به جای اینکه به من 1 2 3 نشون بده 1 2 آدرس خونه ی سوم رو نشون میده.
البته من می دونم که اشکال از

if ((end == size - 1)
هستش ولی شما بگید چی کار کنم تا درست بشه. اگه اینطوری متوجه نشدید بگید کل کدرو بذارم اینجا یا اگه کسی کد آماده ای از Deque داره یه زحمت بکشه همین گوشه موشه ها بذاره ما استفاده کنیم. :بوس:

mehdi.mousavi
دوشنبه 09 آذر 1388, 13:37 عصر
ماگه اینطوری متوجه نشدید بگید کل کدرو بذارم اینجا یا اگه کسی کد آماده ای از Deque داره یه زحمت بکشه همین گوشه موشه ها بذاره ما استفاده کنیم.

سلام.
شما STL رو گذاشتید زمین، نشستید واسه Production Code خودتون deque می نویسید؟؟؟ جای اینکار، میتونید از کلاس deque در STL استفاده کنید. (http://msdn.microsoft.com/en-us/library/22a9t119.aspx)

موفق باشید.

mohammad_68
دوشنبه 09 آذر 1388, 13:53 عصر
شما STL رو گذاشتید زمین، نشستید واسه Production Code خودتون deque می نویسید؟؟؟

راستشو بخوای این قضیه برای درس ساختمان داده هست و استاد بزرگوار تأکید مؤکد دارن که خودمون در مورد نوشتن توابع اقدام کنیم . در کل من که درباره STL چیزی نمی دونم ولی به نظر می رسه از کدهای آماده ی خود c++ باشه ، خیلی ممنون ولی اگه امکانش هست همون کد خودمو درست کنم

mohammad_68
جمعه 20 آذر 1388, 21:23 عصر
دوستان کس دیگه ای نمی تونه کمکی کنه؟