c语言数据结构---广义表
#include<stdio.h>
#include<stdlib.h>
typedef struct GNode{//广义表 int NodeTag; //标志域union{ char data;struct GNode *sublist;};struct GNode *next;
}*PGNode,PG;
void CreateGList(PGNode &GL)
{char ch;scanf("%c", &ch);//读入一个字符,此处只可能读入空格#、左括号或英文字母if(ch=='#')//若输入为空格,则置表头指针为空{GL = NULL;}else if(ch=='(') {GL = (PGNode)malloc(sizeof(struct GNode));GL->NodeTag = 1;CreateGList(GL->sublist);}else{ GL = (PGNode) malloc(sizeof(struct GNode));GL->NodeTag = 0;GL->data = ch;}scanf("%c", &ch);//逗号、右括号或分号if(GL==NULL) //若*GL为空,则什么都不做
{
return ;
}else if(ch==',')//若输入逗号则递归构造后继表{
CreateGList(GL->next);
}else if((ch==')') || (ch==';')){GL->next = NULL;
}
}int DepthGList(PGNode GL)
{int max=0;//遍历表中每一个结点,求出所有子表的最大深度while(GL!=NULL){if(GL->NodeTag==1){int dep = DepthGList(GL->sublist);if(dep > max)max = dep;}GL = GL->next;}return(max + 1);//返回表的深度
}int LengthGList(PGNode GL)
{if(GL!=NULL)return(1 + LengthGList(GL->next));elsereturn(0);
}void PrintGList(PGNode GL)
{if(GL->NodeTag==1){ printf("(");if(GL->sublist==NULL)//若子表为空则输出'#'字符{
printf("#");}else{PrintGList(GL->sublist);
}
printf(")");}else//对于单元素结点{printf("%c", GL->data);}
if(GL->next!=NULL){printf(",");//先输出逗号分隔符PrintGList(GL->next);//再递归输出后继表}
}int main()
{//建议尝试案例(a,b,c,(d,e,f,g,(h,i,j,k,(l,m,n),o),p),q);
PGNode GL;
int depth,length;
printf("请输入一个广义表,以分号结束 : ");
CreateGList(GL);printf("\n此方法输出的输出广义表-> :");PrintGList(GL);printf("\n\n");
depth = DepthGList( GL->sublist );
printf("广义表的深度depth为-> %d \n",depth);
length = LengthGList( GL->sublist );
printf("广义表的长度width为-> %d \n",length);
return 0;
}
相关文章:
c语言数据结构---广义表
#include<stdio.h> #include<stdlib.h> typedef struct GNode{//广义表 int NodeTag; //标志域union{ char data;struct GNode *sublist;};struct GNode *next; }*PGNode,PG; void CreateGList(PGNode &GL) {char ch;scanf("%c", …...

2023.11.12使用flask对图片进行黑白处理(base64编码方式传输)
2023.11.12使用flask对图片进行黑白处理(base64编码方式传输) 由前端输入图片并预览,在后端处理图片后返回前端显示,可以作为图片处理的模板。 关键点在于对图片进行base64编码的转化。 使用Base64编码可以更方便地将图片数据嵌入…...

MATLAB中Filter Designer的使用以及XILINX Coefficient(.coe)File的导出
文章目录 Filter Designer的打开滤波器参数设置生成matlab代码生成XILINX Coefficient(.COE) File实际浮点数的导出官方使用教程 Filter Designer的打开 打开Filter Designer: 方法一:命令行中输入Filter Designer,再回车打开。 方法二&…...
js 深度学习(四)
函数 var test function test1(){var a 1,b2console.log(a,b)test1()//递归 } console.log(test.name) //test1 test1() //报错匿名函数表达式 函数自变量 var test function(){->匿名函数var a 1,b2console.log(a,b)test1()//递归 }var test function(a,b){var a 1,b2…...

leetcode刷题日记:121. Best Time to Buy and Sell Stock( 买卖股票的最佳时机)
题目给了我们一组数prices,其中prices[i]表示第i天的股票价格,需要我们求出买卖股票所能获得的最大收益。 我们的第一想法就是从算出每一种买卖股票的情况然后求出里面的最大值,这样我们就能得到最大收益是多少,但是这种情况过于复…...

Mac 本地部署thinkphp8【部署环境以及下载thinkphp】
PHP的安装以及环境变量配置 1 PHP安装:在终端输入brew install php 这里是PHP下载的最新的 如果提示‘brew’找不到,自己搜索安装吧, 不是特别难 2 环境变量配置 终端输入vim ~/.bash_profile 输入export PATH"/usr/local/Cellar/php/8.…...

【汽车电子】CAN总线分析仪使用介绍(PCAN/同星CAN卡)
本篇文章以CAN卡的使用为基本线索,介绍了在汽车电子领域涉及的一些CAN卡使用流程,搭配强大的上位机可以实现诸多功能。文章并没有局限于一种CAN卡,而是针对PCAN和同星的CAN卡分别以常用CAN报文收发以及诊断控制台实现这两种方向进行了CAN卡使…...
C //例 7.13 有一个3*4的矩阵,求所有元素中的最大值。
C程序设计 (第四版) 谭浩强 例 7.13 例 7.13 有一个3*4的矩阵,求所有元素中的最大值。 IDE工具:VS2010 Note: 使用不同的IDE工具可能有部分差异。 代码块 方法:使用指针、动态分配内存 #include <stdio.h> …...

基于SSM的供电所档案管理系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...

excel用RAND函数生成一个大于0小于1的随机数
插入-》函数: 选择RAND函数: 点击“继续”: 点击“确定”,就生成随机数了:...

详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议
目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH(Authentication Header,认证头) ESP(Encapsulating Security Payload,封装安全载荷) IKE(Internet Key Exchange,因特网密钥…...
mysql使用--数据库的基本操作
在MYSQL中,一些表的集合称为一个数据库。MYSQL服务器管理若干个数据库,每个数据库下都可有若干个表。 1.展示数据库 SHOW DATABASES; 2.创建数据库 如:CREATE DATABASE myname; 更智能语法,可用:CREATE DATABASE IF …...

计算机毕业设计选题推荐-个人记账理财微信小程序/安卓APP-项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

如何利用IP代理进行海外推广?
在当今数字化的时代,网络营销已经成为企业策略的重要组成部分。而对于进去海外市场的跨境玩家来说,海外的推广推广是重中之重。然而,在开展推广的过程中,我们常常会遇到各种挑战,如地域限制、访问速度慢等。 为了解决…...
使用FFmpeg转封装为hls(m3u8)流
改造ffmpeg/doc/examples/remuxing.c,支持将输入流转封装为hls协议对应的github地址:GitHub - yagerfgcs/FFmpeg at examples/remuxing_support_hls修改点:增加设置hls头 // example:https://www.ffmpeg.org/ffmpeg-all.html#hls-2 // f…...

npm install导致的OOM解决方案
文章目录 问题记录解决方法Linux重启排查方法 如何排查Linux自动重启的原因 问题记录 我在华为云服务器配置npm开发环境的时候, SSH远程连接一直掉线,无奈提了工单,被告知是NPM install导致的OOM问题。无语了,破NPM还有这个问题呢…...

HTTP和HTTPS详解
一)什么是HTTP协议 1)HTTP协议是倾向于相遇业务层次上面的一种协议,传输层协议主要考虑的是端对端之间的一个传输过程,TCP重点进行关注的是可靠传输;咱们的HTTP/1,HTTP/2是基于TCP的,但是咱们的HTTP/3是基于UDP的&…...

设计模式之模版方法(TemplateMethod)
模版方法 钩子函数 回调函数 在父类里面有一个模版方法,在这个方法里面调用了op1,op2,op3… 在子类里面如果想要改变父类的op1和op2 只需要重写op1和op2,那么这个重写之后的方法,可以在父类里面直接调用的到 例子: J…...

为什么数据安全很重要?哪些措施保护数据安全?
数据安全很重要的原因是因为数据是现代社会的重要财产之一。很多组织和企业依赖数据来做出商业决策,管理客户关系,进行财务规划等等。如果这些数据泄露或遭到黑客攻击,那么就会影响企业的经济利益,甚至影响到个人的隐私和安全。此…...
git push 操作代码回退
git reset revert 回退回滚取消提交返回上一版本 总有一天你会遇到下面的问题. (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚. 这些开发中很常见的问题,所以git的取消提交…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...

智警杯备赛--excel模块
数据透视与图表制作 创建步骤 创建 1.在Excel的插入或者数据标签页下找到数据透视表的按钮 2.将数据放进“请选择单元格区域“中,点击确定 这是最终结果,但是由于环境启不了,这里用的是自己的excel,真实的环境中的excel根据实训…...
Shell 解释器 bash 和 dash 区别
bash 和 dash 都是 Unix/Linux 系统中的 Shell 解释器,但它们在功能、语法和性能上有显著区别。以下是它们的详细对比: 1. 基本区别 特性bash (Bourne-Again SHell)dash (Debian Almquist SHell)来源G…...

使用homeassistant 插件将tasmota 接入到米家
我写一个一个 将本地tasmoat的的设备同通过ha集成到小爱同学的功能,利用了巴法接入小爱的功能,将本地mqtt转发给巴法以实现小爱控制的功能,前提条件。1需要tasmota 设备, 2.在本地搭建了mqtt服务可, 3.搭建了ha 4.在h…...