队列与栈 的笔记

实话说,其实从高中开始学信息奥赛时开始,一直重点都是学习算法以及思想,根本没怎么理会数据结构,因为除了了树结构,其它的结构都可以笼统归到方法思想这一类,所以从来遇到问题,都是想用什么什么方法,然后这方法后来才发现原来叫“栈”“队列”。

也就是说,接触到的问题的解决方案里,从来都是用到了它们的思想,并且是它们的变种,根本没有学习过什么是最简单的“栈”“队列”。由于用到的都是自创的变种,也导致算法复杂度上可以说是五花八门,毕竟根据实际需求,自己扩增一些属性,从而可以优化复杂度,当然,代价就是占用存储量增加。

结果,最近面试总是被问到最简单的“栈”“队列”,然后就懵了,平常谁管这是“栈”“队列”啊,都是根据实际情况,直接写个变种啊。

不得不还是好好想想最简单的队列与栈应该是怎么的,毕竟还是要应付面试...


“栈”的思想是后进先出,也就是说为了实现这个思想,最少的要素是什么?


class myele
{
    myele *ptr_father_ = NULL;
};

class mystack
{
    myele *ptr_current_= NULL ;
};


也就是说 每个元素ele只要有一个指向前面ele的指针ptr_father_,  以及数据结构mystack中只要保存当前栈末尾的指针ptr_current_,然后再写些操作函数,就能实现栈的最基本功能,也就是说上面列出来的就是最基本的 栈,以后栈的各种操作复杂度,用这个来分析即可。


至于队列,思想为“先进先出”,那么最少的要素为:

class myele
{
    myele *ptr_next_ = NULL;
};

class myqueue
{
    myele *ptr_head_ = NULL;
    myele *ptr_current_= NULL ;
};

也就是说 每个元素ele只要有一个指向后面的ele的指针ptr_next_,  以及数据结构myqueue中只要保存当前队列末尾的指针ptr_current_以及队列头指针ptr_head_。
然后再写些操作函数,就能实现队列的最基本功能,也就是说上面列出来的就是最基本的 队列,以后队列的各种操作复杂度,用这个来分析即可。


好了,这样就舒坦多了,以后叫我分析栈与队列都按照前面最基本元素进行分析。免得每次我都没头绪,到底栈,队列里哪些指针有,哪些指针没有...












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值