数据结构—栈


先说什么是栈:      1、后进先出 2、对数据的所有操作只能在固定的一端进行操作,不能再中间或者另一端对数据进行操作。符合以上两点的存储数据的类(对象)叫做栈。 需要说明的是:栈是符合以上两个特性的所有的数据结构都可以叫做栈,无论其用什么基本容器实现的。再说如何实现:      可以使用数组或者链表实现栈,在用链表实现的时候要屏蔽掉链表的一些特性:在链表中间对数据进行操作等。看一下jdk中自带的栈:    注意Stack(图一)中:Stack继承自Vactor Stack自己的方法种类    Vector(图二)中 :Vector中的方法 Stack继承自Vactor,所以Stack是可以调用父类中的set(int index, E element),insertElementAt(E obj, int index)等操作的,这样的话就与栈的特性有矛盾,我对这一点还没有理解透彻,是不是第二条特性需要去掉?希望有朋友看到之后能够指教指教。感谢!图一:Stack.java    图二:Vector.java 既然是jdk自带的有栈,我们还了解他干什么? 在一些特殊情况下,需要根据实际情况封装自己的栈。下面给两个自己做的示例,一个使用数组实现的栈,一个是用链表实现的栈。数组实现:链表实现:(只实现了基本功能,可根据实际需要添加参数或者方法)再给个测试类:遇到的几个问题:    1、有没有栈的官方标准定义?      只要符合后进先出(last in first off,LIFO)的数据结构都是栈。    2、泛型 T和object有什么区别,接收参数的时候有什么不同的??      a:约束了此容器中只能存储一种类型数据。      b:在从容器中取出对象的时候不需要进行类型强转,容器已经知道(免费云主机域名因为在new 容器的时候在中已经制定了存储对象类型)你存储的是什么类型,但是object需要进行强转。    3、栈要不要实现其删除、插入、查找操作?      栈不需要这些方法,这些方法的存在没意义。画蛇添足。    4、除了使用数组和链表还有没有其他栈实现方式?      应该没有了吧?

相关推荐: 企业防泄密软件的安全性

1、密钥的安全性  加密文件的安全由算法和密钥来保证。加密算法一般都是采用国际流行的安全性高的算法,这些算法都是公开的,所以确切的说加密算法的安全性真正依赖的是密钥。  防泄密软件的密钥是否安全应该解决以下问题:  要保证不能够搭建出两套一样的软件环境,也就是…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/01 08:32
下一篇 02/01 08:33