数据结构的核心是链接列表。由于指针和所有这些,学生们常常发现它有点困难(当用C++实现时)。但是,如果我们把它与LinkedList in C#进行比较,就会更容易理解,也不会大惊小怪,等等。那么(对40年前写的旧书没有什么不敬之处),与C# LinkedList相比,我们还应该在课程或软件工程中使用C++ LinkList吗?
我试图找出字符串列表中的任何字符串中是否已经使用了某个字母。如果是,请选择下一个字母进行比较。如果没有-返回这封信并更新初始列表。
要签入我要使用的列表:
check:: [String] -> Char -> Char
check s c
| any (elem c) s = check s (next c)
| otherwise = do update s c
return c
但它给了我一个错误:
无法匹配类型‘Char’和‘Char’
预期类型: String -> Char -> Char
实际
我在一个编译器设计课程中读到,扫描的输出是一个序列对(令牌代码,标记在符号表中的位置)。我对“立场”部分的含义有点困惑。当符号表表示为可以使用索引(例如数组)访问其元素的结构时,“位置”是明确的,它意味着数组中的第1、2、99元素。例如,源代码:
if (a == b) a = a + c;
扫描的输出将是流:( .,(id,1),.,(id, 2 ),.,(id,3) ) --为了简单起见,我没有描述其他标记--而符号表将是(a,b,c),因此在符号表的位置3上的位置1,b上有a,c。
当符号表被表示为二进制搜索树时会发生什么?对于相同的源代码,符号表树将有一个根节点,其键'b