社区首页 >问答首页 >堆栈链接列表故障排除

堆栈链接列表故障排除
EN

Stack Overflow用户
提问于 2016-10-27 17:31:11
回答 1查看 90关注 0票数 1

我有这个任务来实现链表堆栈,我不明白为什么测试输出没有显示任何数据。当编译和运行程序时,输出是:

,这就是它应该看起来像的样子

抽样预期产出:

好:堆栈是空的

推送数据: 10,30,50

打印堆栈50,30,10,

好的:堆栈大小是3

好的:窥视堆栈顶部是50

好的:堆栈不是空的

Pop 2数据: 50,30

打印堆栈30,10,

打印栈10,

好的:堆栈pop数据是30

清晰堆栈

打印堆栈[]

,这是我要得到的,

您的测试输出:

好:堆栈是空的

推送数据: 10,30,50

但在这里,它没有运行任何东西,也没有为我提供任何错误。我不明白这是怎么回事。我的代码如下:

代码语言:javascript
代码运行次数:0
复制
/**
    A class of stacks whose entries are stored in a chain of nodes.
    Implement all methods in SimpleLinkedStack class using 
    the inner Node class. 

    Do not change or add data fields 
    Do not add new methods
    You may access Node object fields directly, i.e. data and next 
*/

package PJ2;

public class SimpleLinkedStack<T> implements StackInterface<T>
{

   // Data fields
   private Node topNode;    // references the first node in the chain
   private int count;       // number of data in this stack

   public SimpleLinkedStack()
   {
       topNode = null;
       count = 0;
      // add stataments
   } // end default constructor

   public void push(T newData)
   {
       Node newNode = new Node (newData, topNode);
       topNode = newNode;
       count++;

      // add stataments
   } // end push

   public T peek()
   {
       T top = null;
       if (topNode != null)
           top = topNode.data;

       return top;
      // add stataments
   } // end peek

   public T pop()
   {
       T top = peek();
       if (topNode != null) {
           topNode = topNode.next;
           count--;
       }

       return top;
      // add stataments
   } // end pop

   public boolean empty()
   {
       return (count == 0) && (topNode == null);
      // add stataments
   } // end empty

   public int size()
   {
       return count;
      // add stataments
   } // end isEmpty

   public void clear()
   {
       topNode = null;
       count = 0;
      // add stataments
   } // end clear

   @Override
   public String toString()
   {
       String result = "[";
       Node currentNode = topNode;
       while (currentNode != null) {
           result = result + topNode.data + ", ";
           currentNode = topNode.next;
       }
       result = result + "]";
       return result;
      // add stataments
      // note: data class in stack must implement toString() method
      //       return a list of data in Stack, separate them with ','
   }


   /****************************************************
    private inner node class
        Do not modify this class!!
        you may access data and next directly
    ***************************************************/

    private class Node
    {
      private T data; // entry in list
      private Node next; // link to next node
      private Node (T dataPortion)
      {
        data = dataPortion;
        next = null; // set next to NULL
      } // end constructor

      private Node (T dataPortion, Node nextNode)
      {
        data = dataPortion;
        next = nextNode; // set next to refer to nextNode
      } // end constructor
    } // end Node


   /****************************************************
      Do not modify: Stack test
   ****************************************************/
   public static void main (String args[])
   {

        System.out.println("\n"+
    "*******************************************************\n"+
        "Sample Expected output:\n"+
    "\n"+
        "OK: stack is empty\n"+
        "Push 3 data: 10, 30, 50\n"+
        "Print stack [50,30,10,]\n"+
        "OK: stack size is 3\n"+
        "OK: peek stack top is 50\n"+
        "OK: stack is not empty\n"+
        "Pop 2 data: 50, 30\n"+
        "Print stack [30,10,]\n"+
        "Print stack [10,]\n"+
        "OK: stack pop data is 30\n"+
        "Clear stack\n"+
        "Print stack []\n"+
    "\n"+
    "*******************************************************");

        System.out.println("\nYour Test output:\n");
    StackInterface<Integer> s = new SimpleLinkedStack<Integer>();
    if (s.empty()) 
            System.out.println("OK: stack is empty");
    else
            System.out.println("Error: stack is not empty");

    s.push(10);
    s.push(30);
    s.push(50);
        System.out.println("Push 3 data: 10, 30, 50");
        System.out.println("Print stack " + s);

    if (s.size() == 3) 
            System.out.println("OK: stack size is 3");
    else
            System.out.println("Error: stack size is " + s.size());

    if (s.peek() == 50) 
            System.out.println("OK: peek stack top is 50");
    else
            System.out.println("Error: peek stack top is " + s.size());

    if (!s.empty()) 
            System.out.println("OK: stack is not empty");
    else
            System.out.println("Error: stack is empty");

        System.out.println("Pop 2 data: 50, 30");
        s.pop();
        System.out.println("Print stack " + s);
    int data=s.pop();
        System.out.println("Print stack " + s);
    if (data == 30) 
            System.out.println("OK: stack pop data is 30");
    else
            System.out.println("Error: stack pop data is " + data);

        System.out.println("Clear stack");
        s.clear();
        System.out.println("Print stack " + s);
   }

} // end Stack
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-27 17:45:28

提示:您所看到的行为表明:

代码语言:javascript
代码运行次数:0
复制
    System.out.println("Print stack " + s);

永远不会结束。现在您知道了,+ s将在s上调用toString()。所以仔细看看toString在做什么,看看它是否有一个无限循环。(我想是的.)

提示2:如果您无法通过对代码进行“眼球化”来找到bug,那么就尝试使用Java调试器并单步执行它。(你仍然需要运用你的观察力和推理能力.)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40296614

复制
相关文章
NoSQL和数据可扩展性
介绍 本文提供了一个易于理解和有用的一组有关当前可用NoSQL数据库的信息。 可扩展数据架构 可扩展数据架构已发展用于提高整体系统效率并降低运营成本。 具体的NoSQL数据库可能具有不同的拓扑要求,但
用户1263954
2018/01/30
12.3K0
NoSQL和数据可扩展性
可扩展模式
软件系统与硬件和建筑系统最大的区别在于软件是可扩展的。一个硬件生产出来后一般都不会进行改变了,而且都会一直使用,知道不能使用为止;一栋房子建好了是不会去改变其整体架构,顶多也是进行装修,但是整体架构是不会变的。
田维常
2019/07/30
5850
可扩展模式
MATLAB截断数组
s1 = randi([400, 3000],189,1);s1 = sort(s1);s1(1,1) = 400;s1(189,1) = 3000;s1 = s1/1000;lambda = s1;%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到10
狼啸风云
2019/04/09
1.6K0
MATLAB-数组
之前,我们讨论了很多关于MATLAB向量和矩阵的知识,在本章中,我们将讨论多维数组。在MATLAB中所有的数据类型的变量是多维数组,向量是一个一维阵列,矩阵是一个二维数组。
用户9925864
2022/07/27
1.1K0
数组的扩展
数组的扩展 数组的扩展.png 扩展运算符 扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列 由于扩展运算符可以展开数组,所以不再需要apply方法,将数组转为函数的参数了 数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组 扩展运算符提供了数组合并的新写法。 扩展运算符可以与解构赋值结合起来,用于生成数组 扩展运算符还可以将字符串转为真正的数组。 任何 Iterator 接口的对象(参阅 Iter
李才哥
2021/02/23
5390
数组的扩展
数组的扩展
扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。
小小杰啊
2022/12/21
5730
matlab 循环矩阵_matlab循环输出数组
clc;clearall;closeall;t0=[11];a=[12;34]t=t0;t(1,:)=t0’\an=10;fori=2:nt(i,:)=t(i-1,:)’\a;endt
全栈程序员站长
2022/11/08
3.3K0
Matlab的数组索引
在 MATLAB中,根据元素在数组中的位置(索引)访问数组元素的方法主要有三种:按位置索引、线性索引和逻辑索引。
用户9925864
2022/07/27
1.7K0
【可扩展性】谷歌可扩展和弹性应用的模式
本文档介绍了一些用于创建具有弹性和可扩展性的应用程序的模式和实践,这是许多现代架构练习的两个基本目标。设计良好的应用程序会随着需求的增加和减少而上下扩展,并且具有足够的弹性以承受服务中断。构建和运行满足这些要求的应用程序需要仔细规划和设计。
架构师研究会
2022/09/26
1.8K0
matlab 单元数组和元胞数组
本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一些负面消息对国内各个高校和业界影响很大。但是我们作为技术人员,更是要奋发努力,拼搏上进,学好技术,才能师夷长技以制夷,为中华之崛起而读书!
演化计算与人工智能
2020/08/14
1.8K0
可动态扩展的数据库模型设计
在通常的数据库设计中,我们定义了每个实体有多少个属性,每个属性的数据类型是什么,有多长,是否允许为空,有什么约束条件等,这些定义是完全静态的,系统创建时就全部定义好,不能动态修改。但是对于实体的属性变化很快,或者实体和属性由用户在系统中自行定义的情况下,那么就需要一个可以动态扩展的数据库模型,以保存各种动态产生的数据。
深蓝studyzy
2022/06/16
1.4K0
可动态扩展的数据库模型设计
数据库PostrageSQL-可扩展性
PostgreSQL的JIT实现可以内联C以及internal类型的函数体,还有基于这类函数的操作符。
cwl_java
2021/01/13
1.2K0
Matlab赋值_matlab二维数组赋值
y=[106。42 108。26 109。58 109。5 110 109。93 110。49 110。
全栈程序员站长
2022/11/10
2.2K0
可扩展架构取舍
在做出取舍之前有一点很重要:列出那些不能舍弃的需求——我们的设计的哪些方面对实现可扩展是至关重要的、不能改变的。比如,被渲染页面中的实体个数或者函数间接调用的最大深度就不能改变。虽然不可变的内容不会太多,但是它们确实存在。最好的办法是缩小这些内容的作用范围,减少它们的数量。如果有太多严格的设计原则不能被打破或改变以迎合需求,就不能更好地适应不断变化的可扩展性影响因素。
博文视点Broadview
2020/06/11
4290
XML——可扩展标记语言
(1)可扩展性方面:XML允许用户根据需要自行定义新的标识及属性名,以便更好地从语义上修饰数据。
From Zero
2021/12/07
7270
可扩展机器学习——概述
注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图也是引用的原来的教程,若内容上有任何错误,希望与我联系,若内容有侵权,同样也希望告知,我会尽快删除。 可扩展机器学习系列主要包括以下几个部分: 概述 Spark分布式处理 线性回归(linear Regression) 梯度下降(Gradient Descent) 分类——点击率预测(Click-through Rate Prediction) 神经
felixzhao
2018/03/20
1.1K0
可扩展机器学习——概述
可扩展机器学习——概述
注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图也是引用的原来的教程,若内容上有任何错误,希望与我联系,若内容有侵权,同样也希望告知,我会尽快删除。
felixzhao
2019/02/13
6150
用 R &Python 在云端运行可扩展数据科学
前言 如今,数据科学变得越来越复杂。这种复杂性由下面三个因素导致: 增长的数据生产能力 —— 环视四周,数的出多少个能产生数据的设备呢?如果你用笔记本电脑来浏览本文的话算一个,如果身边有智能手机(以及安装的APPs)的话再加一个,如果带了健身手环的话还要加一个,驾驶的汽车(有些情况下)也算一个 —— 它们都在持续不断地生产数据。现在设想今后几 年内的情景,你所使用的冰箱、家里的温度调节器、穿戴的衣物、兜内的钢笔以及喝水的水壶都会嵌入传感器,不断向数据科学家(和数据库)传输数据用来分析。 低廉的数据存储成本
用户1737318
2018/06/06
9670
matlab运行结果图片如何保存_应对数据丢失最简单的方法
% saveas(figure_handle,filename,fileformat)
全栈程序员站长
2022/09/30
1.8K0
Matlab的多维数组操作
MATLAB中的多维数组是指具有两个以上维度的数组。在矩阵中,两个维度由行和列表示。
用户9925864
2022/07/27
1.5K0
Matlab的多维数组操作

相似问题

保存bash退出代码

12

bash脚本“退出代码126”出错

35

Bash退出代码状态脚本错误

23

进程运行后不会退出Bash脚本

11

docker运行bash脚本无法退出

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档