【数据结构】NOJ014 求广义表深度

本文记录了作者在解决NOJ014问题中遇到的挑战,主要涉及广义表深度的计算。作者首先提到表头-表尾表示法的理解难点,并分享了因代码错误导致的挫败感。在重新编写代码后,找到了问题所在——将L->tag错误地写成了L->atom。同时,作者发现题目要求的两种深度求解方法在网上资料中并未明确区分。
摘要由CSDN通过智能技术生成
//【数据结构】NOJ014 求广义表深度
//表头-表尾表示法

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

//广义表定义

typedef char Atomtype;

typedef enum{ATOM,LIST}NodeTag; //枚举类型
typedef struct GLNode           //一个表结点
{
    NodeTag tag;
    union
    {
        Atomtype atom;      //元素值
        struct
        {
            struct GLNode *hp,*tp;  //表头结点、表尾结点
        }ptr;
    };
}GLNode,*GList;

bool Create(GList *L,char *s);  //根据输入字符串s,创建广义表
int GetDepthByhp(GList L);      //按表头-表尾分析方法求表深
void server(char *s1,char *s);  //分离s为s1头字符串与s尾字符串
void substr(char *s,char *s1,int start,int len);    //复制字符串

bool Create(GList *L,char *s)
{//将字符串s插入L
    char s1[100];   //存储待插入的表头结点
    GList p,q;      //p始终存储第一级广义表表尾结点,q存储p的前一个结点

    if(s==NULL)  //s为空则当前表空
        (*L)=NULL;
    else
    {
        (*L)=(GList)malloc(sizeof(GLNode));    //新建一个表结点

        if(strlen(s)==1)    //原子结点
        
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值