作业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;
}



















