其实吧,如果你坚持看到第五课,你就会发现,其实数据结构并没有你想象的那么复杂
当然我们一直在学习理论,并没有在实践,在后续将提供第一个十进制转二进制的源代码
有线性顺序表版本,线性链式表版本,堆栈顺序版本和堆栈链式版本
接下来,我们先讲述一下堆栈,其实吧,他就是线性表!
只是日常生活中,比如我们洗碗,我们的盘子放再那儿,一次往上放,用的时候,从上面开始拿
即先进后出,后出先进
计算机算加减乘除等,汉诺塔,迷宫,都是需要用到堆栈的,所以我们对线性(数组!!)表加以修饰限制成为了堆栈
堆栈就是一个数组,只能在数组的末尾进行删改插入等操作,其他位置是禁止操作的(不是不可以操作,只是操作了,就不是堆栈的特性了)
堆栈的底部(就是数组的开始)名栈底,堆栈的顶部称为栈顶(TOP经常用到英文),我们就在栈顶进行数据修改
下面给出进栈,出栈的代码:
请大家耐心读,建立对栈的概念
void push(int value)
{
int i;
if(top>=maxsize) printf(“the stack is full\n”);
else
{
printf(“the stack content before(T-B):”);
for(i=top;i>=0;i--)
printf(“[%d]”,stack[i]);
top++;
stack[top]=value;
printf(“\nthe stack content after push(T-B):”);
for(i=top;i>=0;i--)
printf(“[%d]”,stack[i]);
printf(“\n”);
}}
int pop( )
{
int temp, i;
if(top<0) {printf(“\n the stack is empty\n”); return –1;}
else
{
printf(“the stack content before(T-B):”);
for(i=top;i>=0;i - -)
printf(“[%d]”,stack[i]);
temp=stack[top];
top - -;
printf(“\n the pop value is [%d]”,temp);
printf(“\nthe stack content after pop(T-B):”);
for(i=top;i>=0;i--)
printf(“[%d]”,stack[i]);
printf(“\n”);
retun temp;
}}