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.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;
本回答被提问者和网友采纳

以上是关于C++实现:2.用类模板设计一个栈类stack,其中有两个私有数据成员s数组(存放栈元素)和int top(用于表示栈的主要内容,如果未能解决你的问题,请参考以下文章

基于数组实现Java 自定义Stack栈类及应用

c++创建链表为啥要用类模板

标准模板库中的栈(stack)

栈类Stack

数据结构之——基于链表的栈的模板实现

C++ 模板模板(双模板?)