之前一直以为栈很难,其实一点都不难,真的比链表简单多了。
什么是栈? 只能在一端进行插入和删除的线性表
先进后出的数据的结构
栈的作用?
计算二进制 除以2
实现方式 数组 ,链表(之后补充)
题目:用栈的方式来实现十进制转为各个进制。
//先写一个数组的栈
#include<iostream>
using namespace std;
#define MAX_SIZE 20
typedef struct stack
{
int arry[MAX_SIZE];//栈的容量
int top;//栈顶
int size;//栈的大小
}Stack;
void init(Stack*p)//初始化栈元素
{
p->size = 20;//设置栈的最大容量
p->top = 0;//初试位置栈顶为0
}
void pushStack(Stack*p,int data)
{
if (p->top < p->size)
{
p->arry[p->top] = data;
++p->top;
}
}
int popStack(Stack*p)
{
if (p->top >= 0)
{
--p->top;
return p->arry[p->top];
}
else
return -1;
}
int Emptystack(Stack*p)
{
if (p->top >0)//不能等于0,不知道为什么
return 1;
else
return 0;
}
int main()
{
Stack MyStack;
init(&MyStack);
int x = 255;
while (x > 0)
{
pushStack(&MyStack, x % 2);
x = x / 2;
}
while (Emptystack(&MyStack) == 1)
{
cout << popStack(&MyStack);
}
/*pushStack(&MyStack, 10);
int num = popStack(&MyStack);
cout << num << endl;*/
system("pause");
//while (1);
return 0;
}