PDA

View Full Version : دو مشکل ابتدايي تو پياده سازي صف و پشته!



vahid javani
سه شنبه 02 آبان 1391, 09:32 صبح
درود
صف و پشته رو مي خواستم پياده سازي کنم که به یه مشکل بر خوردم!
اگه امکانش هست راهنمايي کنيد
کلاس هام رو تو دو تا فايل .h و .cpp درست کردم ولي خطاي لينک کردن ميده که نتونستم درستش کنم.

ممنون از پاسختون

#include<iostream>
using namespace std;
#include"queue.h"
template< typename TT >
qu<TT>::qu(int number)
{
front=rear=-1;
if(number>0)
{
size=number;
queueptr=new TT [number];
}
else
{
cout<<"error\n your number most be positive"<<endl;
system("pause");
exit(0);
}
}
template< typename TT >
bool qu<TT>::full()
{
if((rear+1)%size==front)
{
cout<<"stack is full!"<<endl;
return true;
}
else
return false;
}
template< typename TT >
bool qu<TT>::empty()
{
if(rear==front)
{
cout<<"stack is empty!"<<endl;
return true;
}
else
return false;
}
template< typename TT >
void qu<TT>::push(TT &element)
{
if( !full() )
queueptr[(++rear)%size]=element;
else
exit(0);
}
template< typename TT >
TT qu<TT>::pop()
{
if( !empty() )
return queueptr[++front];
else
exit(0);
}




#ifndef QUEUE_H
#define QUEUE_H
#include<iostream>
using namespace std;
template< typename TT >
class qu
{
public:
qu(int);
void push(TT &);
TT pop();
private:
TT *queueptr;
bool full();
bool empty();
int front;
int rear;
int size;
};
#endif

#include<iostream>
using namespace std;
#include"stack.h"
template< typename T >
st<T>::st(int number)
{
top=-1;
if(number>0)
{
size=number;
stackptr=new T [number];
}
else
{
cout<<"error\n your number most be positive"<<endl;
system("pause");
exit(0);
}
}
template< typename T >
bool st<T>::full()
{
if(top>=size-1)
{
cout<<"stack is full!"<<endl;
return true;
}
else
return false;
}
template< typename T >
bool st<T>::empty()
{
if(top==-1)
{
cout<<"stack is empty!"<<endl;
return true;
}
else
return false;
}
template< typename T >
void st<T>::push(T &element)
{
if( !full() )
stackptr[++top]=element;
else
exit(0);
}
template< typename T >
T st<T>::pop()
{
if( !empty() )
return stackptr[top--];
else
exit(0);
}

#ifndef STACK_H
#define STACK_H
#include<iostream>
using namespace std;
template< typename T >
class st
{
public:
st(int);
void push(T &);
T pop();
private:
T *stackptr;
bool full();
bool empty();
int top;
int size;
};
#endif


#include<iostream>
using namespace std;
#include"stack.h"
#include"queue.h"
int main()
{
int num,state_stack=1,state_queue=1;
st< int > tes_stack ( 12 ) ;
qu< int > tes_queue ( 12 ) ;
cout<<"for push press 1\nfor pop press 2\n for exit press 0 \nPLEASE\n";
while(state_stack)
{
cout<<"CHOOOOSE: ";
cin>>state_stack;
if(state_stack==1)
{
cout<<"enter your number to push >> ";
cin>>num;
tes_stack.push(num);
}
else if (state_stack==2)
cout<<"pop >> "<<tes_stack.pop()<<endl;
}
while(state_queue)
{
cout<<"CHOOOOSE: ";
cin>>state_queue;
if(state_queue==1)
{
cout<<"enter your number to push >> ";
cin>>num;
tes_queue.push(num);
}
else if (state_queue==2)
cout<<"pop >> "<<tes_queue.pop()<<endl;
}
system("pause");
return 0;
}

vahid javani
پنج شنبه 04 آبان 1391, 18:55 عصر
دوستان اگه امکانش هست این فایل رو اد کنید
http://www.rodfile.com/osctdh2g8pmq/Stack.rar.html
ببینید از ارورش چیزی می فهمید
من به استاد هم نشون دادم توش موند!
با یه سیستم دیگه هم چک کردم همین خطا رو داد
ممنون میشم کمکم کنید

vahid javani
چهارشنبه 10 آبان 1391, 11:35 صبح
چرا هیشکی جواب نمیده؟
خیلی برام جای تعجبه