C++实现:2.用类模板设计一个栈类stack,其中有两个私有数据成员s数组(存放栈元素)和int top(用于表示栈

2.用类模板设计一个栈类stack,其中有两个私有数据成员s数组(存放栈元素)和int top(用于表示栈顶元素下标),以及三个公有成员函数push(元素入栈),pop(元素出栈)和stackempty(判断栈是否为空)。stack在缺省情况下课存放10个元素。编写main函数用建立有6个整数和10个字符的栈来测试stack。

第1个回答  2012-05-07
//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数组...
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(t...

用C++建立一个顺序栈并且包括(进栈,退栈和读栈顶)
template <class ElementType> class Stack { \/\/ 栈的共有接口 public:\/\/构造函数 Stack():myTop(0){} \/\/析构函数 ~Stack();\/\/判空函数 bool empty() const;\/\/压栈函数 void push(ElementType value);\/\/取用栈顶元素 ElementType top()const;\/\/弹出栈顶元素 void pop();\/\/私有数据成员 ...

用C++建立一个顺序栈并且包括(进栈,退栈和读栈顶),急用
template <class ElementType> class Stack { \/\/ 栈的共有接口 public:\/\/构造函数 Stack():myTop(0){} \/\/析构函数 ~Stack();\/\/判空函数 bool empty() const;\/\/压栈函数 void push(ElementType value);\/\/取用栈顶元素 ElementType top()const;\/\/弹出栈顶元素 void pop();\/\/私有数据成员 ...

C++语法糖(模板)详解以及示例代码
在main函数中,创建整型与双精度浮点数栈,使用push与pop函数进行元素操作。模板在编译时实例化,使用Stack与Stack实例化Stack类模板,生成具体代码。总结,C++模板是强大的语言特性,简化通用代码编写,提升复用性与可读性,减少代码重复。利用模板避免编写大量复制粘贴操作,提高编程效率。

C++类模板问题
vector<T> data, int maxsize);vector<T> getData();};template <class T>Stack<T>::Stack(vector<T> data, int maxsize):_data(data), _maxsize(maxsize){}template <class T>vector<T> Stack<T>::getData(){return _data;}\/\/给你写了个大概,你按照这个根据自己需求再写写看 ...

用C++编写一个使用类模板对数组进行排序、查找和求元素和的程序
int data[5] = {5,4,3,2,1};vector<int> obj;cout<<"数组和为:"<<obj.sum(data,5)<<endl;cout<<"数字4在数组中的位置是:"<<obj.search(4,data,5)<<endl;cout<<"排序前数组各元素为:"<<endl;for(int i = 0; i < 5; i++)cout<<data[i]<<" ";cout<<endl;cout<<...

3.设计一个完整的C++程序定义一个类模板,利用它实现10个整数、浮点数...
以下是一个示例C++程序,使用类模板实现对整数、浮点数和字符进行排序:include <iostream> include <vector> include <algorithm> template<typename T> class Sorter { public:Sorter(const std::vector<T>& data) : data_(data) {} void Sort() { std::sort(data_.begin(), data_.end());...

奇怪的c++的学习Primer Plus -14 c++中的代码重用
valarray类是一个模板类,它能够支持处理不同数据类型,如数值或具有类似特征的类。它可以用于执行诸如计算数组中所有元素的总和、找出最大值和最小值、访问各元素以及返回元素个数等操作。接下来,我们以Student类为例,探讨类模板在实际应用中的实现。在Student类的设计中,学生与姓名和分数之间的关系是...

C++ vector中使用pair 及 pair的基本用法总结(转)
pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员...

在C++中stack<char>s是什么意思?
1. stack 是c++里的标准模板类用于完成栈操作 2. <char>代表这个栈能操作char类型数据 3. s就一变量名字 相当于 int a的作用 关于标准模板库的知识还挺多的,并且也挺重要的,我记得菜鸟教程里面有相关内容,忘记的时候可以去翻一下。加油哦!

相似回答