Java - 链接列表泛型子列表

时间:2014-02-14 23:18:16

标签: java list linked-list

所以我在java中使用Linked List没有多少经验,我得到了这个需要在链表上存储值的赋值。总之是创建处理Lisp表达式的类。特别是,它从表达式创建基于引用的链接列表,并实现许多方法来对列表执行操作。正如我的教授所提供的那样,他使用标记器来打破表达。例如:

        parse("(+ 3 5 ( 23.2 -1a 1/2 \"abc\" ) ) "); 

我的任务是将它添加到一个简单的链表中,但我的问题是,对于每个打开的括号,都有一个新的列表,其中的括号是一个子列表。

对于案件:(4 *(45 + 3) - (7/5))


(45 + 3)是子列表或列表。
(7/5)是子列表或列表
4是整数
*符号
45整数
+符号
3整数
- 符号
7/5比率


我的教授告诉我:“因此,子列表或列表必须与完整列表相同,这意味着识别器进程可以递归。”

我有一个Lisp泛型类,一个LinkedList类,以及一个用于将表达式分解为标记的类。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为你想要的是Composite Pattern实现。如果您有两种类型需要同样处理,则可以复合。解析器通常具有节点和叶类,或复合和终端表达式。如果您同时实现了相同的接口,则可以轻松创建描述解析过程的列表,因为列表中的每个节点都可以是其他节点的集合。所以你的直觉是正确的,你正在处理一棵树。看起来像列表的树通常是复合树。