<强> Java栈之链式栈存储结构实现强>
<强>一、链栈强>
采用单链表来保存栈中所有元素,这种链式结构的栈称为链栈。
<强>二,栈的链式存储结构实现强>
包com.ietree.basic.datastructure.stack;/* * *链栈 * *由ietree * 2017/4/29 */公开课LinkStack{//定义一个内部类节点,节点实例代表链栈的节点 {私有类节点//保存节点的数据 私人T数据;//指向下个节点的引用 私人节点下;//无参构造器 公共节点(){ }//初始化全部属性的构造器 公共节点(T数据节点下){ 这一点。数据=https://www.yisu.com/zixun/data; 这一点。下一个=下一个; } }//保存该链栈的栈顶元素 私人节点上;//保存该链栈中已包含的节点数 私人int大小;//创建空链栈 公共LinkStack () {//空链栈,顶级的值为null 顶级=零; }//以指定数据元素来创建链栈,该链栈只有一个元素 公共LinkStack (T元素){ 顶级=新节点(元素,零); 大小+ +; }//返回链栈的长度 公共int长度(){ 返回大小; }//进栈 公共空间推动(T元素){//让顶级指向新创建的元素,新元素的下一个引用指向原来的栈顶元素 顶级=新节点(元素); 大小+ +; }//出栈 公共T pop () { 节点oldTop=最高;//让前引用指向原栈顶元素的下一个元素 顶级=top.next;//释放原栈顶元素的下一个引用 oldTop。下一个=零; 大小,; 返回oldTop.data; }//访问栈顶元素,但不删除栈顶元素 公共T peek () { 返回top.data; }//判断链栈是否为空栈 公共布尔空(){ 返回大?=0; }//请空链栈 公共空间clear () { 顶级=零; 大?0; } 公共字符串toString () {//链栈为空栈时 如果(空()){ 返回“[]”; 其他}{ StringBuilder某人=new StringBuilder (“(”); (节点电流=最高;当前!=零;当前=current.next) { sb.append (current.data.toString () + ", "); } int len=sb.length (); 返回sb.delete (len - 2, len) .append (“]”) .toString (); } } }
<强>测试类:强>
包com.ietree.basic.datastructure.stack;/* * *由ietree * 2017/4/29 */公开课LinkStackTest { 公共静态void main (String [] args) { LinkStack堆栈=new LinkStack (); stack.push (“aaaa”); stack.push (“bbbb”); stack.push(“预备”); stack.push (“dddd”); System.out.println(栈); system . out。println(“访问栈顶元素:”+ stack.peek ()); system . out。println(“第一次弹出栈顶元素:”+ stack.pop ()); system . out。println(“第二次弹出栈顶元素:”+ stack.pop ()); system . out。println(“两次流行之后的栈:”+栈); } }
程序输出:
[dddd,预备,bbbb, aaaa级) 访问栈顶元素:dddd 第一次弹出栈顶元素:dddd 第二次弹出栈顶元素:预备 两次流行之后的栈:[bbbb, aaaa]
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持。