进栈出栈的方法(线性表)
#include
#include
#include
struct lisl
{
int arr[60];
int size=20;
int len=0;
};
void pushlisl(lisl *p,int data)//入栈
{
if (p->len >= p->size)
{
printf("栈满");
}
else
{
p->arr[p->len++] = data;
}
}
int popshlisl(lisl *p)//出栈
{
if (p->len <=0)
{
printf("没有数据");
return 0;
}
else
{
return p->arr[--(p->len)];
}
}
int isitlisl(lisl *p)//判断栈满还是空
{
return p->len<= 0;
}
void main()
{
int x=47;
struct lisl stdl;
initlisl(&stdl);
while (x!=0)
{
pushlisl(&stdl,x%2);//从右往左进行压栈
//x /= 2;//可以用这种方法
x>>= 1;//也可以这种右移二进制到0
}
while (isitlisl(&stdl) != 1)//判断栈满还是空
{
printf("%d", popshlisl(&stdl));//输出栈,是从左往右输出
}
system("pause");
}
x>>=1的作用是
#include
#include
#include
void main()
{
//移动前:0b0010
int x = 2;
printf("%dn", x);
//右移动后:0b0001
x >>= 1;
printf("%dn", x);
system("pause");
}
2
1
请按任意键继续. . .