作业1
#include <iostream>
using namespace std;
template <typename T>
class Node
{
private:
T* p; //指针指向栈的首地址
int maxsize; //栈最大容量
int top=-1; //栈顶
public:
Node(){} //无参构造
Node(int max):maxsize(max)//有参构造 填最大容量
{p=new T(maxsize);}
~Node() //析构函数
{delete[] p;}
bool ruzhan(T other) //入栈
{
if(maxsize-1==top)//栈满
return 0;
else
{
p[++top]=other; //输入元素
return 1;
}
}
bool panman()//判满
{
return maxsize-1==top;
}
bool pankong() //判空
{
return -1==top;
}
bool chuzhan(int a) //出栈 a为出栈个数
{
if(-1==top)
{
cout<<"栈为空,出栈失败";
return 0;
}
else if(a>top+1)
{
cout<<"出栈失败,要出栈的个数大于栈里面的数据个数";
return 0;
}
else
{
top-=a;
return 1;
}
}
void show(); //声明
};
template <typename T1>
void Node<T1>::show() //遍历栈
{
for(int i=0;i<=top;i++)
{
cout<<"数据域为:"<<p[i]<<endl;
}
}
int main()
{
int b=30,c=25,d=2;
Node<int>a(32);//容量为32的
a.ruzhan(b);//入栈30
a.ruzhan(6);
a.ruzhan(b);
a.ruzhan(c);
a.ruzhan(d);
a.show();
return 0;
}
#include <iostream>
using namespace std;
template <typename T>
class Node
{
private:
T* p; //指针指向队列的首地址
int front=0; //队头
int rear=0; //队尾
int maxsize; //最大容量
public:
Node(){} //无参构造
Node(int max):maxsize(max)//有参构造 填最大容量
{p=new T(maxsize);}
~Node() //析构函数
{delete[] p;}
bool ruzhan(T other) //入队
{
if(front==(rear+1)%maxsize)//队满
return 0;
else
{
p[rear]=other; //输入元素
rear=(rear+1)%maxsize;
return 1;
}
}
bool panman() //判满
{
return front==(rear+1)%maxsize;
}
bool pankong() //判空
{
return front==rear;
}
bool chuzhan(int a) //出栈 a为出栈个数
{
if(front==rear)
{
cout<<"栈为空,出栈失败";
return 0;
}
else if(a > (maxsize-front+rear)%maxsize)
{
cout<<"出栈失败,要出栈的个数大于栈里面的数据个数";
return 0;
}
else
{
front=(front+1)%maxsize; //出队
return 1;
}
}
void show(); //声明
};
template <typename T1>
void Node<T1>::show() //遍历队列
{
for(int i=front;i!=rear;i=(i+1)%maxsize)
{
cout<<"数据域为:"<<p[i]<<endl;
}
}
int main()
{
Node<int>a(32);//容量为32的
a.ruzhan(1);//入栈
a.ruzhan(6);
a.ruzhan(3);
a.ruzhan(2);
a.ruzhan(5);
a.show();
return 0;
}