我必须实施一个棋盘游戏,它有17个位置,并且像链接列表一样“链接”。
所以,我打算为此使用ArrayList的LinkedList。 (LinkedList<ArrayList<String>>
或...... ......)
然而,它有两个起始位置,在几个节点之后合并,并且玩家可以选择他们想要从哪个位置开始。(这意味着两个节点的“下一个”字段指向一个节点,一个节点可能(但是没必要,我猜?)需要两个'prev'字段。)
另外,我希望最后一个位置旁边的附加节点的“下一个”字段指向自身。
简而言之,我想要一个类似于LinkedList的集合类,但有一些变异。
我怎么能这样做?
我的编程水平是初学者〜中级,我学习了类似于Java Collections Framework的LinkedList定义(但不记得很多......),以及使用教科书的c ++ std :: list。
所以我的问题就是这些。
我是否有必要实现一个简单的List(和Node)类,只需创建18个节点并按照我想设置的方式设置这些节点的私有字段,并将ArrayLists添加到其“数据”字段中?
另外,我是使用Stack的LinkedList(因为我只需要最新推送的元素),但我觉得如果我只是创建私有ArrayList类并根据我的风格调整它会更有用,方式类似使用ArrayList类实现Stack。听起来怎么样?
我担心的是,我不是一个非常优秀的程序员,如果我自己定义它们,它们可能是不可靠的,而且工作也可能非常耗时。(它有截止日期)
有没有更好的方法来实现这一目标?(比如,可能扩展标准类?不确定..)
非常感谢任何建议,
谢谢。
答案 0 :(得分:1)
我害怕你对你所做的事情(即你的要求)的描述太难理解了。因此,我将自己限制在一般性答案中。
如果你真的需要能够做&#34;手术&#34;在类似列表的数据结构上,您应该从头开始实现它/它们。
尝试通过扩展现有列表/集合类来实现此目的可能会因为几个原因(至少)失败。
您的代码需要修补的一些内容被声明为private
,这使得修补它非常困难(并且非常不可取)。 (这并非不可能,但你需要做一些令人讨厌的反思技巧,这会使你的代码变得复杂,脆弱和低效。除非绝对没有其他选择,否则它不应该是你应该做的事情。 )
即使您成功了,您也拥有一个名义上实现一个或多个现有集合接口的数据结构,但(很可能)违反了该接口的合同应该表现出来。
我担心的是,我不是一个非常优秀的程序员,如果我自己定义它们,它们可能是不可靠的,而且这项工作也可能非常耗时。 (它有截止日期)
无论如何,我的建议是尝试以正确的方式做到这一点。
如果您未能在截止日期前完成,您仍然可以使用看起来很好的代码,并且(希望)应该相应地进行标记。
另一方面,如果您尝试以错误的方式执行此操作,您可能会获得一个正常工作的程序,但仍然会因为您以错误的方式完成它而被标记下来。你可能会失败,如果你在尝试正确编写代码时失败了,那就更糟了。