
广义表存储结构|数据结构
发布日期:2021-05-07 06:44:02
浏览次数:27
分类:精选文章
本文共 978 字,大约阅读时间需要 3 分钟。
文章目录
一、头尾链表的存储结构
由于广义表的数据元素可以分为原子和广义表,由此需要两种结构的结点,一种是表结点(广义表),一种是原子结点(原子)。
非空广义表可以分解为表头和表尾。
1、表头和表尾
表头:非空广义表的第一个元素,可以是一个单原子,也可以是一个子表
表尾:去除表头之外其余元素构成的表,表尾一定是一个广义表2、表结点和原子结点
表结点:标志域、指示表头的指针域、指示表尾的指针域
原子结点:标志域和值域 标志域(tag):值为1时表明结点是子表,值为0时表明结点是原子//ATOM=0表示原子,LIST=1表示子表typedef enum{ ATOM,LIST} ElemTag;typedef struct GLNode{ ElemTag tag; union { //Atomtype由用户自定义 AtomType atom; //ptr是表结点的指针域7 struct { struct *GLNode *hp; struct *GLNode *tp; }ptr; };}*GList;
二、扩展线性链表的存储结构
无论是表结点还是原子结点,均由三个域组成

typedef enum{ ATOM,LIST} ELemTag;typedef struct GLNode{ ElemTag tag; struct GLNode *tp; union { struct GLNode *hp; AtomType atom; }}*GList;
void Virus_detection(){ ifstream inFile("输入.txt"); ofstream outFile("结果.txt"); inFile >> num; while(num--) { inFile >> Virus.ch+ 1; inFile >> Person.ch + 1; Vir = Virus.ch; flag = 0; m = Virus.length; for(i=m+1,j=1;j<=m;j++) { Virus.ch[i++] = Virus.ch[j]; } Virus.ch[2*m+1] = '\0'; for(i=0;i
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月30日 10时50分34秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
稀疏数组
2021-05-09
js的严格模式
2021-05-09
idea的安装和无限期试用
2021-05-09
Oracle VM VirtualBox安装PVE虚拟机
2021-05-09
【转】如何用css限制文字长度,使溢出的内容用省略号…显示
2021-05-09
Android MediaPlayer setDataSource failed
2021-05-09
ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
2021-05-09
【nodejs原理&源码杂记(8)】Timer模块与基于二叉堆的定时器
2021-05-09
大前端的自动化工厂(1)——Yeoman
2021-05-09
数据仓库建模方法论
2021-05-09
虚拟机搭建hadoop环境
2021-05-09
DataStax Bulk Loader教程(四)
2021-05-09
物联网、5G世界与大数据管理
2021-05-09
Cassandra与Kubernetes
2021-05-09
.NET应用框架架构设计实践 - 概述
2021-05-09
Rust 内置 trait :PartialEq 和 Eq
2021-05-09
Hibernate(十四)抓取策略
2021-05-09
[菜鸟的设计模式之旅]观察者模式
2021-05-09
Spring-继承JdbcDaoSupport类后简化配置文件内容
2021-05-09