I have a question about stacks... I want to write a program with 3stacks and I want to add this operations on each of these stacks( I should use arrays):
我有一个关于堆栈的问题...我想编写一个带有3stacks的程序,我想在每个堆栈上添加这些操作(我应该使用数组):
1.create the stack 2. push number 3.pop number 4. display the top of each stack
1.创建堆栈2.按数字3.pop数字4.显示每个堆栈的顶部
I wrote the program but I encountered these errors:
我写了程序,但我遇到了这些错误:
Error 4 error LNK2019: unresolved external symbol "public: int __thiscall stack::IsFull2(void)" (?IsFull2@stack@@QAEHXZ) referenced in function "public: void __thiscall stack::Push2(void)" (?Push2@stack@@QAEXXZ) C:\Users\Princess\Documents\Visual Studio 2012\Projects\Project9\Project9\Source.obj
错误4错误LNK2019:未解析的外部符号“public:int __thiscall stack :: IsFull2(void)”(?IsFull2 @ stack @@ QAEHXZ)在函数“public:void __thiscall stack :: Push2(void)”中引用(?Push2 @ stack @@ QAEXXZ)C:\ Users \ Princess \ Documents \ Visual Studio 2012 \ Projects \ Project9 \ Project9 \ Source.obj
Error 5 error LNK1120: 1 unresolved externals C:\Users\Princess\Documents\Visual Studio 2012\Projects\Project9\Debug\Project9.exe 1
错误5错误LNK1120:1个未解析的外部C:\ Users \ Princess \ Documents \ Visual Studio 2012 \ Projects \ Project9 \ Debug \ Project9.exe 1
what should I do in order to solve these errors?
我该怎么做才能解决这些错误?
#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;
}
1 个解决方案
#1
1
Exactly what the error says: you did not define the IsFull2
method in your code, but you use it inside the stack::Push2
method. You need to write the body of stack::IsFull2
or change your code so it does not call it (an then remove the declaration too).
确切地说错误是什么:你没有在你的代码中定义IsFull2方法,但你在stack :: Push2方法中使用它。您需要编写stack :: IsFull2的主体或更改您的代码,以便它不会调用它(然后删除声明)。
#1
1
Exactly what the error says: you did not define the IsFull2
method in your code, but you use it inside the stack::Push2
method. You need to write the body of stack::IsFull2
or change your code so it does not call it (an then remove the declaration too).
确切地说错误是什么:你没有在你的代码中定义IsFull2方法,但你在stack :: Push2方法中使用它。您需要编写stack :: IsFull2的主体或更改您的代码,以便它不会调用它(然后删除声明)。