C++实现:2.用类模板设计一个栈类stack,其中有两个私有数据成员s数组(存放栈元素)和int top(用于表示栈
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++实现:2.用类模板设计一个栈类stack,其中有两个私有数据成员s数组(存放栈元素)和int top(用于表示栈相关的知识,希望对你有一定的参考价值。
2.用类模板设计一个栈类stack,其中有两个私有数据成员s数组(存放栈元素)和int top(用于表示栈顶元素下标),以及三个公有成员函数push(元素入栈),pop(元素出栈)和stackempty(判断栈是否为空)。stack在缺省情况下课存放10个元素。编写main函数用建立有6个整数和10个字符的栈来测试stack。
参考技术A //stack.htemplate<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;
本回答被提问者和网友采纳
以上是关于C++实现:2.用类模板设计一个栈类stack,其中有两个私有数据成员s数组(存放栈元素)和int top(用于表示栈的主要内容,如果未能解决你的问题,请参考以下文章