/*********以下部分是把一个c++程序写到一个文件中能正确运行但是就是写到三个文件中不能编译通过在这个正确的程序后是不能编译通过的三个文件请大家帮帮忙,小弟拜托大家了**********/
//单文件类堆栈举例
//stack.h (类的声明头文件)
#include<iostream>
#include<iomanip>
#include<cctype>
using namespace std;
const int SIZE=10;
//template<class type>
class stack{
private:
int *stck;//数组用于存放栈中数据
int tos;//栈下标
protected:
public:
stack();//构造
~stack();
int push(int ch);//把数据压如堆栈
int pop();//数据弹出堆栈
void show_stack();//显示堆栈数据
};//
//stack_realize.cpp (类实现头文件)
//#include<iostream>
//#include<stack>
//using namespace std;
//template<class type>
stack::stack()
{
tos=0;//注意这里的下标初始值为0
stck=new int[SIZE];
for(int i=0;i<SIZE;i++)
{
stck[i]=0;
}
}
//template<class type>
stack::~stack()
{
delete []stck;
}
//template<class type>
int stack::push(int ch)
{
stck[tos]=ch;//
tos+=1;//这里的循环变量位置和下面的出栈循环变量位置对比
if(tos==SIZE)
{
cout<<"stack is full\n";
return 1;
}
return 0;
}
//template<class type>
int stack::pop()
{
tos-=1;//这里的循环变量顺序和上面的数据压入堆栈对比,这是的tos已经循环到SIZE值
return stck[tos];//
if(tos==0)
{
cout<<"stack is empty\n";
return 1;
}
}
//template<class type>
void stack::show_stack()
{
for(tos=SIZE-1;tos>=0;tos--)
{
if((tos+1)%5==0)
{
cout<<endl;
}
cout<<stck[tos]<<' ';
}
cout<<endl;
}
//stack_main.cpp(类的使用)
//#include<iostream>
//#include"stack"
//using namespace std;
//template<class type>
int main()
{
int tmp,i;
//template<class type>
stack sta1;//定义对象并初始化
while(1)
{
if(i==1)
{
break;
}
cout<<"please input data of stack\n";
cin>>tmp;
i=sta1.push(tmp);
}
sta1.show_stack();
return 0;
}
/*
[root@localhost c++]# g++ 单文件堆栈举例.cpp -o 单文件堆栈举例
[root@localhost c++]# ./单文件堆栈举例
please input data of stack
1
please input data of stack
2
please input data of stack
3
please input data of stack
4
please input data of stack
5
please input data of stack
6
please input data of stack
7
please input data of stack
8
please input data of stack
9
please input data of stack
0
stack is full
0 9 8 7 6
5 4 3 2 1
[root@localhost c++]#
*/
/***********以下部分是把一个c++程序写到三个文件中但是调试不出**************/
//stack.h (类的声明头文件)
#include<iostream>
#include<iomanip>
#include<cctype>
using namespace std;
const int SIZE=10;
class stack{
private:
int *stck;//数组用于存放栈中数据
int tos;//栈下标
protected:
public:
stack();//构造
~stack();
int push(int ch);//把数据压如堆栈
int pop();//数据弹出堆栈
void show_stack();//显示堆栈数据
};
//stack_realize.cpp (类实现头文件)
#include<iostream>
#include<stack>
using namespace std;
stack::stack()
{
tos=0;
stck=new int[SIZE];
for(int i=0;i<SIZE;i++)
{
stck[i]=0;
}
}
stack::~stack()
{
delete []stck;
}
int stack::push(int ch)
{
if(tos==SIZE)
{
cout<<"stack is full";
return 1;
}
stck[tos]=ch;//
tos+=1;//这里的循环变量位置和下面的出栈循环变量位置对比
return 0;
}
int stack::pop()
{
if(tos==0)
{
cout<<"stack is empty";
return 1;
}
tos-=1;//这里的循环变量顺序和上面的数据压入堆栈对比
return stck[tos];//
}
void stack::show_stack()
{
for(tos=SIZE-1;tos>=0;tos--)
{
if(tos%5==0)
{
cout<<endl;
}
cout<<stck[tos]<<' ';
}
cout<<endl;
}
#include<iostream>
#include"stack"
using namespace std;
int main()
{
int tmp,i;
stack<int> sta1;//定义对象并初始化
while(1)
{
cout<<"please input data of stack\n";
cin>>tmp;
i=sta1.push(tmp);
if(i==1)
{
break;
}
}
sta1.show_stack();
return 0;
}
#include<stack> #include "stack.h"
和系统的stack有冲突吧
最好使用命名空间区分你的实现stack,{namespace}
很太少了,没有动力整理 呵呵