#include <iostream>
#define N 5
using namespace std;
class My_stack{
private:
int *data;
int top;
public:
void create()
{
data=new int[N];
top=-1;
}
bool full()
{
return top==N-1;
}
bool empty()
{
return top==-1;
}
int push(int data)
{
if(full())
{
cout<<endl<<"栈已满,入栈失败"<<endl;
return -1;
}
this->data[++top]=data;
return 0;
}
int pop()
{
if(empty())
{
cout<<"栈为空,出栈失败"<<endl;
return -1;
}
top--;
return 0;
}
void bianli()
{
if(empty())
{
cout<<"顺序栈为空,遍历失败"<<__LINE__<<endl;
return;
}
for(int i=top;i>=0;i--)
{
cout<<" "<<this->data[i]<<endl;
}
}
void destroy()
{
delete []data;
}
};
int main()
{
My_stack s1;
s1.create();
s1.push(10);
s1.bianli();
cout<<"*****"<<endl;
s1.push(20);
s1.push(30);
s1.bianli();
cout<<"*****"<<endl;
s1.push(40);
s1.push(50);
s1.bianli();
cout<<"*****"<<endl;
s1.push(60);
s1.bianli();
cout<<"*****"<<endl;
s1.pop();
s1.bianli();
s1.destroy();
return 0;
}
#include <iostream>
using namespace std;
int max;
class My_seque{
private:
int *data;
int front;
int tail;
public:
void init(int size)
{
data = new int[size];
front = 0;
tail = 0;
::max=size;
}
bool empty()
{
return front==tail;
}
bool full()
{
return (tail+1)%(::max)==front;
}
void enqueue(int data)
{
if(full())
{
cout<<"队列已满,入队失败"<<endl;
return;
}
this->data[tail]=data;
tail=(tail+1)%(::max);
}
void dequeue()
{
if(empty())
{
cout<<"队列为空,出队失败"<<endl;
return;
}
int data;
data=this->data[front];
this->data[front]=0;
front=(front+1)%(::max+1);
}
void show()
{
if(empty())
{
cout<<"队列为空,遍历失败"<<endl;
return;
}
for(int i=front;i!=tail;i=(i+1)%(::max))
{
cout<<(this->data[i])<<endl;
}
}
};
int main()
{
My_seque s1;
s1.init(8);
s1.enqueue(1);
s1.show();
cout<<"*****"<<endl;
s1.enqueue(2);
s1.enqueue(3);
s1.enqueue(4);
s1.enqueue(5);
s1.show();
cout<<"*****"<<endl;
s1.enqueue(6);
s1.enqueue(7);
s1.enqueue(8);
s1.show();
cout<<"*****"<<endl;
s1.enqueue(9);
s1.show();
cout<<"*****"<<endl;
s1.dequeue();
s1.show();
cout<<"*****"<<endl;
}