写代码的时候看到要求写两个函数:一个Pop出栈,一个Get获取栈顶元素,当时没多想,就那么写完了,结果写完猛地一想,不对啊,两个我写得一模一样啊
进而引发思考:两个函数的不同,以下是我的理解,Pop出栈是将栈顶元素取出来之后释放原栈顶元素,栈的有效长度-1;Get获取栈顶元素是只获取栈顶元素,不释放栈顶元素,栈顶长度不变
继而引发思考,要获取栈顶元素首先必须把栈顶指针自减,然后拿出元素。但Pop要求释放原栈顶元素,Get不要求释放。那我实现Get的时候在栈顶指针自减之后获取了元素是不是要在 自增一下还原栈;Pop则是获取了元素不用自增了直接结束函数
再而引发思考,顺序栈的栈顶指针始终指向栈顶元素的下一个地址,那我Pop完栈顶元素之后,栈的有效长度为size-1,此时栈顶指针指向第size个地址,也就是上一次出栈的元素,如何释放这个元素,以保证我下次正常或非正常操作栈顶指针时,第size个地址为空
感激不尽
进而引发思考:两个函数的不同,以下是我的理解,Pop出栈是将栈顶元素取出来之后释放原栈顶元素,栈的有效长度-1;Get获取栈顶元素是只获取栈顶元素,不释放栈顶元素,栈顶长度不变
继而引发思考,要获取栈顶元素首先必须把栈顶指针自减,然后拿出元素。但Pop要求释放原栈顶元素,Get不要求释放。那我实现Get的时候在栈顶指针自减之后获取了元素是不是要在 自增一下还原栈;Pop则是获取了元素不用自增了直接结束函数
再而引发思考,顺序栈的栈顶指针始终指向栈顶元素的下一个地址,那我Pop完栈顶元素之后,栈的有效长度为size-1,此时栈顶指针指向第size个地址,也就是上一次出栈的元素,如何释放这个元素,以保证我下次正常或非正常操作栈顶指针时,第size个地址为空
感激不尽
