当前位置: 首页 > news >正文

长春朝阳网站建设/线上广告推广

长春朝阳网站建设,线上广告推广,建设景区网站的目的,社区网站建设难点在上篇文章当中,我们实现了底层为数组的顺序栈。在我之前的文章中也提到过:以数组为数据结构基础在存储数据方面需要一整块连续的内存来存放数据,一旦遇到需要可以动态扩展的功能需求时如果数据量大可能会给虚拟机很大的压力导致频繁GC来获取…

  在上篇文章当中,我们实现了底层为数组的顺序栈。在我之前的文章中也提到过:以数组为数据结构基础在存储数据方面需要一整块连续的内存来存放数据,一旦遇到需要可以动态扩展的功能需求时如果数据量大可能会给虚拟机很大的压力导致频繁GC来获取足够大的内存块。现在,为了避免这种问题的发生,我们通过另外一种方式实现栈的功能来避免这种问题。

  首先我们定义定义Stack接口:

 1 package com.chen.arithmetic_test.stack_test;
 2 
 3 /**
 4  * Created by ChenMP on 2017/7/4.
 5  */
 6 public interface Stack {
 7     //入栈
 8     public void push(Object obj) throws Exception;
 9     //出栈
10     public Object pop() throws Exception;
11     //获得栈顶元素
12     public Object getTop() throws Exception;
13     //判断栈是否为空
14     public boolean isEmpty();
15 }

  定义我们的节点元素类(当然,我们也可以将其定义为一个内部类):

 1 package com.chen.arithmetic_test.stack_test;
 2 
 3 /**
 4  * Created by ChenMP on 2017/7/4.
 5  */
 6 public class Node {
 7     private Object nodeData; //该节点数据值
 8     private Node footNode;  //底部节点
 9 
10     public Node(Object nodeData) {
11         this.nodeData = nodeData;
12     }
13 
14     public Object getNodeData() {
15         return nodeData;
16     }
17 
18     public void setNodeData(Object nodeData) {
19         this.nodeData = nodeData;
20     }
21 
22     public Node getFootNode() {
23         return footNode;
24     }
25 
26     public void setFootNode(Node footNode) {
27         this.footNode = footNode;
28     }
29 
30     @Override
31     public String toString() {
32         return "Node{" +
33                 "nodeData=" + nodeData +
34                 '}';
35     }
36 }

  编写LinkStack类:

 1 package com.chen.arithmetic_test.stack_test;
 2 
 3 /**
 4  * Created by ChenMP on 2017/7/4.
 5  */
 6 public class LinkStack implements Stack {
 7     private Node head; //栈顶元素
 8     private int size; //栈大小
 9     private int maxSize; //栈最大长度
10 
11     public LinkStack() {
12         this.head = null;
13         this.size = 0;
14         this.maxSize = 10; //设置栈默认大小为10
15     }
16 
17     public LinkStack(int maxSize) {
18         this.head = null;
19         this.size = 0;
20         this.maxSize = maxSize;
21     }
22 
23     @Override
24     public void push(Object obj) throws Exception {
25         if (size == maxSize)
26             throw new Exception("堆栈已满!");
27 
28         Node currentNode = new Node(obj);
29         currentNode.setFootNode(head);
30         this.head = currentNode;
31         size++;
32     }
33 
34     @Override
35     public Object pop() throws Exception {
36         if (0 == size)
37             throw new Exception("堆栈为空!");
38 
39         Node currentNode = this.head;
40         head = currentNode.getFootNode();
41         size--;
42         return currentNode;
43     }
44 
45     @Override
46     public Object getTop() throws Exception {
47         if (0 == size)
48             throw new Exception("堆栈为空!");
49 
50         return head;
51     }
52 
53     @Override
54     public boolean isEmpty() {
55         return size>0?false:true;
56     }
57 }

  编写我们的测试类:

 1 package com.chen.arithmetic_test.stack_test;
 2 
 3 import java.util.Scanner;
 4 
 5 /**
 6  * Created by ChenMP on 2017/7/4.
 7  */
 8 public class TestStack {
 9     public static void main(String[] args) throws Exception {
10         // TODO Auto-generated method stub
11         LinkStack stack = new LinkStack(10);
12 
13         Scanner in = new Scanner(System.in);
14         int temp;
15         for(int i=0;i<10;i++)
16         {
17             System.out.println("请输入第"+(i+1)+"个整数:");
18             temp = in.nextInt();
19             stack.push(temp);
20         }
21 
22         while(!stack.isEmpty())
23         {
24             System.out.println(stack.pop());
25         }
26     }
27 }

  通过上面的代码,我们学习到了通过节点来实现我们自己的堆栈结构,其实在java.util.Stack中,它的实现便是使用了数组为底层来实现的。但是在学习知识的过程中,我们最好能学会举一反三,这样我们才能更好的进步,你说对不对?

转载于:https://www.cnblogs.com/HuaiyinMarquis/p/9029807.html

http://www.jmfq.cn/news/4877137.html

相关文章:

  • 新昌网站制作/集客营销软件官方网站
  • 可以直接做ppt的网站/种子搜索神器 bt 下载
  • 有公司可以做网站升级ipv6/官方网站怎么注册
  • 手机网站营销方法/百度搜索量查询
  • 上海做公司网站的公司/百度竞价推广账户优化
  • 建筑模板怎么装/淄博网站seo
  • 告诉你做网站需要多少钱/免费推广方法
  • 域名打不开原来的网站/百度竞价开户
  • 网站分类主要有哪些/企业培训课程ppt
  • 国外html响应式网站模板/站长seo查询工具
  • 做企业网站需要服务器么/网站优化招商
  • 软考考试科目有哪些/宁波seo外包
  • 内蒙古手机网站制作/网页设计制作网站模板
  • 做网站购买备案域名/新手电商运营从哪开始学
  • 365做网站/医院网络销售要做什么
  • 现在用什么工具建网站/百度分析
  • 唐山网站建设电话/外贸全网营销推广
  • 网站设计培训学校有哪些/免费seo优化
  • 货车保险哪家网站可以直接做/用模板快速建站
  • 常州网站建设公司/近期国内新闻
  • 犀牛云做网站一年多少钱/网络营销服务公司有哪些
  • 网站开发河南/seo基础优化包括哪些内容
  • 爱淘宝网页网站建设/网站不收录怎么办
  • 成交型网站/怎么在百度上做公司网页
  • 怎么建设外贸网站/发帖百度秒收录网站分享
  • 注册网站怎么做网站/百度品牌推广
  • 做家居建材出口网站有哪些/平面设计网站
  • 怎么建设一个网站/网站seo报价
  • 北京学校网站建设公司/深圳网站关键词优化推广
  • 江苏建设考试培训网/seo推广教程