数据结构-栈

一、栈的数据类型

      包括三个成员分别是: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类型的数组,或者指针

指针:

数据结构-栈

字符数组:

数据结构-栈