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;
}
صف و پشته رو مي خواستم پياده سازي کنم که به یه مشکل بر خوردم!
اگه امکانش هست راهنمايي کنيد
کلاس هام رو تو دو تا فايل .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;
}