一、栈的数据类型
包括三个成员分别是:ElemType * base; size_t capacity; int top; 分别是指向栈首元素的base指针,以及容量capacity 、和栈顶位置top
二、栈的结构表示
三、栈有关的重要函数
1.栈的初始化函数
2.入栈、出栈
入栈:先进后出,首先栈要非满,st->len < st->capacity,最后记得给top++
出栈:后进先出,首先栈要非空,只需把top—就行
3.获取栈顶元素
获取栈顶元素:函数返回一个元素类型,先断言非空,return st->base[st->top-1],注意这里是top-1,而不是top--,我们只是获取栈顶元素,并不是让其出栈、
4.栈的判空
栈的判空:函数返回一个bool类型,直接return st->top == 0,为0就是 0 == 0 为真,返回true 否者返回 false
四、栈的应用
1.将十进制数,转换成2进制数
A.借助栈,
思想是:让2去除十进制的数,每次余数先进栈,然后结果就出栈。
栈要容得下,二进制数,先进栈就循环,循环条件是value != 0 ,也就是while(value);每次把余数进栈push(&st,value%2);再把value /= 2;value除2赋值给value;要得到数据就出栈,利用循环,循环条件就是栈不空while(!empty),cout<<gettop(&st); pop(&st);
B.利用数组(int类型的数组)
思想:先申请一块内存用于反着存储数据,还是取模,然后正着输出;
函数的返回值是一个int的指针,申请数组数组大小是int*8(因为一位有8个字节),然后i从后面起存储mol ,int mol = value %2;arr[i] = mol; value /= 2; return 指针 注意,在函数内部使用的变量,要在函数外部使用,就需要用关键之static 将栈区的自动变量,变为全局变量放在全局数据去,供本文件使用,直至本次程序结束。
C.利用字符数组(char 类型的字符数组)
申请的空间32+1+3 一个int在32位就是32个字符+1个'\0'和' '空格,函数内部变量,在外部使用,使用static
2.十进制转换成十六进制
必须用到字符char类型的数组,或者指针
指针:
字符数组: