1、首先定义堆栈结构体,结构体中包含当前堆栈位置、堆栈容量以及堆栈数组指针。
2、初始化堆栈,传入容量参数。函数中初始化堆栈结构体,并根据容量参数,初始化堆栈数组。最后设置当前堆栈位置为0,堆栈容量为传入容量参数。
3、堆栈的第一个操作,Push。向堆栈顶部放置一个数据。我们在实现时也比较简单,将数据添加到堆栈数组中top位置处,并使top加1,指向下一个位置。
4、Push操作时,其实还有一个步骤,当堆栈已满的情况下,我们需要动态的重新申请内存,扩展堆栈容量。如果省略了唁昼囫缍这一步骤,那么和普通的数组一样就缺少了灵活性了。堆栈的resize操作,简单的就是重新申请一段更大的内存,并将当前堆栈拷贝到申请内存中,再重新设置堆栈容量、堆栈数组指针。
5、Top操作,访问当前堆栈顶端数据。因为既要返回数值,又要判断堆栈是否为空,所以在实现中函数返回值标记堆栈是否为空,返回数值通过指针返回。
6、Pop操作,也需要判断堆栈是否为空。当堆栈为空时,返回状态码-1;否则我们修改top数值,指向上一个数据。
7、最后我们写一个验证程序,程序中创建一个保存32个整数的堆栈,然后向堆栈中push100个数,最后打印堆栈结果。程序运行结果正确。最后还有堆栈的释放操作,封装了一个函数进行操作,需要使用者主动调用。