栈
#include <iostream>
using namespace std;
template <typename T>
class my_vector
{
private:
int maxsize;
int top;
T data;
T * vec;
public:
my_vector(){maxsize=5;top=-1;vec=nullptr;}
my_vector(int m):maxsize(m),top(-1),vec(new T[m]){}
~my_vector(){delete [] vec;vec=nullptr;}
//入栈
void puch(T e)
{
if(top==maxsize-1)
{
cout<<"栈满、插入失败\n"<<endl;
return;
}
//2,入栈:先加后压
vec[++top]=e;
return ;
}
//删除
void pop()
{
//1,判断栈是否为空
if(top==-1)
{
cout<<"栈空,删除失败\n"<<endl;
return;
}
//2,删除:先弹后减
cout<<" "<<vec[top--]<<endl;
return ;
}
//遍历:类内声名
void output();
// {
// printf("从栈底到栈顶:\n");
// for(int i=0;i<=top;i++)
// {
// printf("%d\t",vec->data[i]);
// }
// }
};
template <typename T>
void my_vector<T>::output()
{
cout<<"从栈底到栈顶:\n"<<endl;
for(int i=0;i<=top;i++)
{
cout<<" "<<vec[i];
}
}
int main()
{
my_vector<int> v1(10);
for(int i=0; i<10;i++)
{
v1.puch(i);
}
v1.output();
return 0;
}
队列
#include <iostream>
using namespace std;
template<typename T>
class MyQueue
{
private:
T* queue;
size_t maxSize;
size_t front;
size_t rear;
public:
MyQueue(size_t s):queue(new T[s]),maxSize(s),front(0),rear(0){}
virtual ~MyQueue()
{
delete [] queue;
}
//判空
bool Empty()const
{
return front==rear;
}
//判满
bool Full()const
{
return (rear+1)%maxSize==front;
}
//头删
void dequeue()
{
front=(front+1)%maxSize;
}
//尾插
void enqueue(const T& val)
{
queue[rear]=val;
rear=(rear+1)%maxSize;
}
//元素个数
int size() const
{
return (rear+maxSize-front)%maxSize;
}
void show()const
{
for(int i=0;i<size();i++)
{
cout<<queue[i]<<" ";
}
cout<<endl;
}
};
int main()
{
MyQueue<double> q(10);
cout << "---------------------------" << endl;
cout << "-------1.顺序队列入队-------" << endl;
cout << "-------2.顺序队列删除-------" << endl;
cout << "-------3.顺序队列遍历-------" << endl;
cout << "-------0.退出程序-----------" << endl;
cout << "---------------------------" << endl;
while(1)
{
int c;
cout << "请输入您的选择>>> ";
cin >> c;
switch(c)
{
case 1:{
double data;
cout << " 请输入入队的值>>> ";
cin >> data;
q.enqueue(data);
}break;
case 2:{
q.dequeue();
}break;
case 3:{
q.show();
}break;
case 0:return 0;
default:{
cout << "输入错误,请重新输入" << endl;
}break;
}
}
return 0;
}