栈满足的特性是先进后出,就像货车装货物,把货物一次放进去,但是卸货的时候,你得先把最外面的卸载了,才能继续卸载里层的货物。 栈的实现有两种形式,一种是数组,一种是链表。
对于一个栈,需要至少三个属性
链表栈实际上可以看成链表的一种约束,约束了链表的长度,链表的插入和删除位置。 对于链表栈,需要两个变量
对数组进行约束,成为栈。 数组栈的长度一定,使用top记录当前的位置,比如说,array长度为10,但是我们指存储了5个数据,那么top的值就是4。往栈里面加入一个数据,top变成5,当已经10个数据时,top为9。之后继续加入数据,报错,加入失败。 删除数据时,top减少,当top为0时,继续删除,报错,删除失败。 关于实现一个顺序栈
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
class Stack
{
public:
int top;
int length;
int content[10];
int push(int num);
int pop();
int peek();
Stack();
};
int Stack::peek()
{
return content[top];
};
int Stack::push(int num){{top += 1;
if (top >= 10)
{
top -= 1;
return -1;
}
content[top] = num;
length = top + 1;
return content[top];
}
}
;
int Stack::pop()
{
{
top -= 1;
if (top < 0)
{
top += 1;
return -1;
}
content[top + 1] = -1;
length = top + 1;
return content[top];
};
};
Stack::Stack()
{
top = -1;
length = 0;
};
int main()
{
Stack stack;
for(int i=0;i<7;i++){
stack.push(i*i);
}
for (int i = 0; i < stack.length; i++)
{
printf("%d,", stack.content[i]);
};
printf("\n");
stack.pop();
stack.pop();
for (int i = 0; i < stack.length; i++)
{
printf("%d,", stack.content[i]);
};
return 0;
}
本文分享自 Python与MySQL 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!