📜  广义链表

📅  最后修改于: 2022-05-13 01:57:44.529000             🧑  作者: Mango

广义链表

广义链表 L 被定义为 n>=0 元素的有限序列 l 1 , l 2 , l 3 , l 4 , …, l n ,这样 l i要么是原子要么是原子列表。因此
L = (l 1 , l 2 , l 3 , l 4 , …, l n )
其中 n 是列表中的节点总数。

为了表示项目列表,对节点结构有一定的假设。

  • Flag = 1 表示存在向下指针
  • Flag = 0 表示存在下一个指针
  • 数据意味着原子
  • Down指针是当前节点down的节点地址
  • 下一个指针是作为下一个节点附加的节点的地址

为什么是广义链表?
使用广义链表是因为虽然使用链表的多项式运算的效率很好,但缺点是链表不能有效地使用多变量多项式方程。它帮助我们用元素列表来表示多变量多项式。

广义链表的典型“C”结构

typedef struct node {
    char c;                    //Data
    int index;                 //Flag
    struct node *next, *down;   //Next & Down pointer
}GLL;

GLL {列表表示}示例
( A B C D)

当第一个字段为 0 时,表示第二个字段是可变的。如果第一个字段是 1 意味着第二个字段是一个向下的指针,意味着某个列表正在开始。

使用广义链表的多项式表示
典型的节点结构将是:



  • 这里 Flag = 0 表示存在变量
  • Flag = 1 表示存在向下指针
  • Flag = 2 表示存在系数指数

例子:
9x 5 + 7xy 4 + 10xz

在上面的例子中,头节点是变量 x。临时节点将第一个字段显示为 2 表示存在系数和指数。

由于临时节点附加到头节点并且头节点具有变量 x,临时节点具有系数 = 9 和指数 = 5。以上两个节点可以读取为 9x 5

同样,在上图中,节点 temp1 可以读作 x 4

  • 标志字段为 1 表示存在向下指针
  • 温度 2 = y
  • temp3 = 系数 = 7
  • 指数 = 1
  • flag = 2 表示节点包含系数和指数值。
  • temp2 附加到 temp3 这意味着 7y 1并且 temp2 也附加到 temp1 意味着
  • 温度 1 x 温度 2
  • x 4 x 7y 1 = 7x 4 y 1值由上图表示

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程。