C++实现:2.用类模板设计一个栈类stack,其中有两个私有数据成员s数组(存放栈元素)和int top(用于表示栈
2.用类模板设计一个栈类stack,其中有两个私有数据成员s数组(存放栈元素)和inttop(用于表示栈顶元素下标),以及三个公有成员函数push(元素入栈),pop(元...
2.用类模板设计一个栈类stack,其中有两个私有数据成员s数组(存放栈元素)和int top(用于表示栈顶元素下标),以及三个公有成员函数push(元素入栈),pop(元素出栈)和stackempty(判断栈是否为空)。stack在缺省情况下课存放10个元素。编写main函数用建立有6个整数和10个字符的栈来测试stack。
展开
1个回答
展开全部
//stack.h
template<class type>
class Stack
{
private:
enum {NUM=10};
type * s;
int stacksize;
int top;
public:
Stack(int ss=NUM);
~Stack(){delete[] s;}
Stack(const Stack& st);
Stack& operator=(const Stack& st);
bool isempty(){return top==0;}
bool isfull(){return top==stacksize;}
bool push(type& item);
bool pop(type& item);
};
template<class type>
Stack<type>::Stack(int ss)
{
stacksize=ss;
s=new type[stacksize];
top=0;
}
template<class type>
Stack<type>::Stack(const Stack<type>& st)
{
stacksize=st.stacksize;
s=new type[stacksize];
top=st.top;
for(int i=0;i<top;i++)
{
s[i]=st.s[i]
}
}
template<class type>
Stack<type>& Stack<type>::operator=(const Stack<type>& st)
{
if(this==&st)
return *this;
stacksize=st.stacksize;
top=st.top;
delete [] s;
s=new type[stacksize];
for(int i=0;I<top;i++)
{
s[i]=st.s[i];
}
return *this;
}
template<class type>
bool Stack<type>::push(type& item)
{
if(isfull())
return false;
s[top++]=item;
return true;
}
template<class type>
bool Stack<type>::pop(type& item)
{
if(isempty())
return false;
item=sptr[--top];
return true;
}
//stack_test.cpp
#include <iostream>
#include "stack.h"
using namespace std;
int main()
{
Stack<int> int_stack(6);
Stack<char> cha_stack(10);
int int_in[6]={1,2,3,4,5,6};
int int_out[6];
char char_in[10]={'a','b','c','d','e','f','g','h','i','j'};
char char_out[10];
//数据入栈
for(int i=0;i<10;i++)
{
if(i<6)
int_stack.push(int_in[i]);
char_stack.push(char_in[i]);
}
//数据出栈
for(int i=0;i<10;i++)
{
if(i<6)
int_stack.pop(int_out[i]);
char_stack.pop(char_out[i]);
}
//输出显示 验证结果
for(int i=0;i<10;i++)
{
if(i<6)
cout<<int_out[i]<<endl;
cout<<char_out[i]<<endl;
}
return 0;
}
template<class type>
class Stack
{
private:
enum {NUM=10};
type * s;
int stacksize;
int top;
public:
Stack(int ss=NUM);
~Stack(){delete[] s;}
Stack(const Stack& st);
Stack& operator=(const Stack& st);
bool isempty(){return top==0;}
bool isfull(){return top==stacksize;}
bool push(type& item);
bool pop(type& item);
};
template<class type>
Stack<type>::Stack(int ss)
{
stacksize=ss;
s=new type[stacksize];
top=0;
}
template<class type>
Stack<type>::Stack(const Stack<type>& st)
{
stacksize=st.stacksize;
s=new type[stacksize];
top=st.top;
for(int i=0;i<top;i++)
{
s[i]=st.s[i]
}
}
template<class type>
Stack<type>& Stack<type>::operator=(const Stack<type>& st)
{
if(this==&st)
return *this;
stacksize=st.stacksize;
top=st.top;
delete [] s;
s=new type[stacksize];
for(int i=0;I<top;i++)
{
s[i]=st.s[i];
}
return *this;
}
template<class type>
bool Stack<type>::push(type& item)
{
if(isfull())
return false;
s[top++]=item;
return true;
}
template<class type>
bool Stack<type>::pop(type& item)
{
if(isempty())
return false;
item=sptr[--top];
return true;
}
//stack_test.cpp
#include <iostream>
#include "stack.h"
using namespace std;
int main()
{
Stack<int> int_stack(6);
Stack<char> cha_stack(10);
int int_in[6]={1,2,3,4,5,6};
int int_out[6];
char char_in[10]={'a','b','c','d','e','f','g','h','i','j'};
char char_out[10];
//数据入栈
for(int i=0;i<10;i++)
{
if(i<6)
int_stack.push(int_in[i]);
char_stack.push(char_in[i]);
}
//数据出栈
for(int i=0;i<10;i++)
{
if(i<6)
int_stack.pop(int_out[i]);
char_stack.pop(char_out[i]);
}
//输出显示 验证结果
for(int i=0;i<10;i++)
{
if(i<6)
cout<<int_out[i]<<endl;
cout<<char_out[i]<<endl;
}
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询