广义表结构解析与操作

广义表的线性与非线性

广义表既不是线性结构,也不是非线性结构。它是一种更复杂的数据结构,可以包含原子元素和子表,形成递归嵌套的结构。

广义表操作示例

以下是一些广义表操作的示例:

  • head((p,h,w)): 返回 p
  • tail((b,k,p,h)): 返回 (k,p,h)
  • head(((a,b),(c,d))): 返回 (a,b)
  • tail(((b),(c,d))): 返回 ((c,d))
  • head(tail(((a,b),(c,d)))): 返回 (c,d)
  • tail(head(((a,b),(c,d)))): 返回 (b)
  • head(tail(head(((a,d),(c,d))))): 返回 (c,d)
  • tail(head(tail(((a,b),(c,d))))): 返回 ()

广义表的图形表示

以下是一些广义表的图形表示示例:

  • A(b,(A,a,C(A)))

    • 根节点为 A
    • 第一个子节点为原子 b
    • 第二个子节点为子表 (A,a,C(A)),其中:
      • 第一个元素为原子 A
      • 第二个元素为原子 a
      • 第三个元素为子表 C(A)
        • 根节点为 C
        • 唯一子节点为原子 A
  • D(A(),B(e),C(a,L(b,c,d)))

    • 根节点为 D
    • 第一个子节点为空表 A()
    • 第二个子节点为子表 B(e)
      • 根节点为 B
      • 唯一子节点为原子 e
    • 第三个子节点为子表 C(a,L(b,c,d))
      • 根节点为 C
      • 第一个子节点为原子 a
      • 第二个子节点为子表 L(b,c,d)
        • 根节点为 L
        • 子节点为原子 b, c, d

广义表的链表表示

广义表可以用单链表或双链表表示,每个节点包含数据域和指针域,指针域指向下一个节点或子表。

ppt 文件大小:5.3MB