У меня есть вопрос о стеках …
Я хочу написать программу с 3-стеками и добавить эти операции для каждого из этих стеков (я должен использовать массивы):
1. создать стек
2. нажмите номер
3.поп номер
4. отображать верх каждого стека
Я написал программу, но я столкнулся с этими ошибками:
Ошибка 4 ошибка LNK2019: неразрешенный внешний символ «public: int
__thiscall stack :: IsFull2 (void) «(? IsFull2 @ stack @@ QAEHXZ), на который есть ссылка в функции» public: void __thiscall stack :: Push2 (void) «(? Push2 @ stack @@ QAEXXZ) C: \ Users \ Princess \ Документы \ Visual Studio
2012 \ Projects \ Project9 \ Project9 \ Source.objОшибка 5 Ошибка LNK1120: 1 не устранена
внешние C: \ Users \ Принцесса \ Documents \ Visual Studio
2012 \ Projects \ Project9 \ Debug \ Project9.exe 1
что я должен сделать, чтобы решить эти ошибки?
#include <iostream>
using namespace std;
#define Max 100
class stack
{
private:
int a[Max],b[Max],c[Max];
int sp1,sp2,sp3;
public:
void create1();
void create2();
void create3();
int IsEmpty1();
int IsEmpty2();
int IsEmpty3();
int IsFull1();
int IsFull2();
int IsFull3();
void Push1();
void Push2();
void Push3();
int Pop1();
int Pop2();
int Pop3();
void Top();
void Show();
int menu();
};
//***************************************
void stack::create1()
{
sp1=-1;
};
//***************************************
void stack::create2()
{
sp2=-1;
}
//***************************************
void stack::create3()
{
sp3=-1;
}
//***************************************
int stack::IsEmpty1(){
return sp1==-1;
}
//***************************************
int stack::IsEmpty2(){
return sp2==-1;
}
//***************************************
int stack::IsEmpty3(){
return sp3==-1;
}
//***************************************
int stack::IsFull1()
{
return sp1==Max-1;
}
//***************************************
void stack::Push1()
{
if(IsFull1())
printf("stack is full");
else
{
int x;
cout<<"Enter your number"<<endl;
cin>>x;
sp1++;
a[sp1]=x;
}
}
//***************************************
int stack::Pop1()
{
if(IsEmpty1())
cout<<"stack is empty"<<endl;
else
{
int x=a[sp1];
sp1--;
return x;
}
}
//***************************************
int stack::IsFull3()
{
return sp3==Max-1;
}
//***************************************
void stack::Push2()
{
if(IsFull2())
printf("stack is full");
else
{
int x;
cout<<"Enter your number"<<endl;
cin>>x;
sp2++;
b[sp2]=x;
}
}
//***************************************
int stack::Pop2()
{
if(IsEmpty2())
cout<<"stack is empty"<<endl;
else
{
int x=b[sp2];
sp2--;
return x;
}
}
//***************************************
void stack::Push3()
{
if(IsFull3())
printf("stack is full");
else
{
int x;
cout<<"Enter your number"<<endl;
cin>>x;
sp3++;
c[sp3]=x;
}
}
//***************************************
int stack::Pop3()
{
if(IsEmpty3())
cout<<"stack is empty"<<endl;
else
{
int x=c[sp3];
sp3--;
return x;
}
}
//***************************************
void stack::Top()
{
cout<<"the top of first stack"<<a[sp1]<<endl;
cout<<"the top of second stack"<<b[sp2]<<endl;
cout<<"the top of third stack"<<c[sp3]<<endl;
}
//***************************************
void stack::Show()
{
for(int i=0;i<=sp1;i++)
cout<<"the members of the first stack:"<<a[i]<<endl;
for(int j=0;j<=sp2;j++)
cout<<"the members of the second stack:"<<b[j]<<endl;
for(int k=0;k<=sp3;k++)
cout<<"the members of the third stack:"<<c[k]<<endl;
}
//***************************************
int stack::menu(){
int x;
cout<<"1.Add Item"<<endl;
cout<<"2.Delete Item"<<endl;
cout<<"3.Get Count"<<endl;
cout<<"4.Show stack"<<endl;
cout<<"5.Exit"<<endl;
cout<<"Enter your choose:"<<endl;
cin>>x;
return x;
}
////***************************************
int main()
{
stack st;
st.create1();
st.create2();
st.create3();
while(1)
{
switch(st.menu())
{
case 1:
cout<<"first stack:"<<endl;
st.Push1();
cout<<"second stack:"<<endl;
st.Push2();
cout<<"third stack:"<<endl;
st.Push3();
break;
case 2:
cout<<"first stack:"<<endl;
st.Pop1();
cout<<"second stack:"<<endl;
st.Pop2();
cout<<"third stack:"<<endl;
st.Pop3();
break;
case 3:
st.Top();
break;
case 4:
st.Show();
break;
case 5:
return 0;
default:
cout<<"incorrect"<<endl;
}
}
return 0;
}
Именно то, что говорит ошибка: вы не определили IsFull2
метод в вашем коде, но вы используете его внутри stack::Push2
метод. Вам нужно написать тело stack::IsFull2
или измените свой код, чтобы он не вызывал его (а затем удалите объявление тоже).
Других решений пока нет …