美文网首页
判别两个广义表是否相等的递归算法

判别两个广义表是否相等的递归算法

作者: kiruma | 来源:发表于2017-11-18 11:23 被阅读0次

/**********

【题目】试编写判别两个广义表是否相等的递归算法。

广义表类型GList的定义:

typedef enum {ATOM,LIST} ElemTag;

typedef struct GLNode{

ElemTag tag;

union {

char atom;

struct {

GLNode *hp, *tp;

} ptr;

}un;

} *GList;

**********/

由于两个广义表有一个不相等,那就肯定返回FALSE,一开始想到的是如果不相等,返回0,相等返回1,再让返回的值与之前的值相乘,这样子的话0一直乘下去还会是0,那就解决了有一个不相等就一定会返回FALSE的问题,不过再写算法时很困难。后来想到了一种简单的写法。

Status Equal(GList A, GList B)

/* 判断广义表A和B是否相等,是则返回TRUE,否则返回FALSE */

{

if(A==NULL){

if(B==NULL)

return TRUE;

else return FALSE;

}

if(A->tag==ATOM)  {

if(B->tag==ATOM&&B->un.atom==A->un.atom)

return TRUE;

else return FALSE;

}

if(Equal(A->un.ptr.hp,B->un.ptr.hp))

if(Equal(A->un.ptr.tp,B->un.ptr.tp))

return TRUE;

else return FALSE;

else return FALSE;

}

相关文章

  • 判别两个广义表是否相等的递归算法

    /********** 【题目】试编写判别两个广义表是否相等的递归算法。 广义表类型GList的定义: typed...

  • 广义表

    广义表广义表的定义广义表的存储结构广义表的M元多项式广义表的递归算法 一、广义表的定义:广义表(Lists,又称列...

  • 判断两棵二叉树是否相等

    算法思想:先序遍历,递归实现。先判断根节点是否相等,然后在判断左右子树是否相等。代码如下

  • 广义表

    广义表的定义 广义表是线性表的推广,是一种非线性的数据结构,也有人称其为列表。广义表的实现主要应用递归,通过广义表...

  • 101. Symmetric Tree

    思路:递归,左子树和右子树是否相等

  • 前端算法面试题整理

    1.统计字符串出现最多的字母及其次数 2.排序算法 3去重算法 4.判断位置数组是否相等 首先判断两个数组是否相等...

  • 判断是否回文(palindromes)。

    代码 解释 整体思路是,递归地判断字符串的首尾是否相等 如果相等,就排除掉首尾字符,继续判断首尾是否相等,注意在最...

  • 二分查找

    1.非顺序表查找最大值递归算法 2.顺序表的二分查找算法查找下标最小的特定元素x 递归实现 非递归实现

  • 2019-09-26JS手写快排quicksort

    递归:指在函数的定义中使用函数自身的方法; 排序算法的比较 术语解释 n:数据规模; 稳定:两个相等的值在排序前后...

  • JS手写快排quicksort

    递归:指在函数的定义中使用函数自身的方法; 排序算法的比较 术语解释 n:数据规模; 稳定:两个相等的值在排序前后...

网友评论

      本文标题:判别两个广义表是否相等的递归算法

      本文链接:https://www.haomeiwen.com/subject/oqdevxtx.html