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 داره یه زحمت بکشه همین گوشه موشه ها بذاره ما استفاده کنیم. :بوس:
اول این یه تیکه از کد منه :
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 داره یه زحمت بکشه همین گوشه موشه ها بذاره ما استفاده کنیم. :بوس: