当前位置: 首页 > wzjs >正文

全国最大网站建站公司贸易公司做网站有优势吗

全国最大网站建站公司,贸易公司做网站有优势吗,南通做网站优化的公司,wordpress page.phpHello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》、《Linux修炼&#xff1a;终端…

         Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!

我的博客:<但凡.

我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C++修炼之路》、《Linux修炼:终端之内 洞悉真理》

欢迎点赞,关注!

1、广义表的定义

        广义表(Generalized List)是一种非线性的数据结构,可以看作线性表的推广。与线性表不同,广义表中的元素可以是原子(不可再分的单个数据项),也可以是另一个广义表,意思就是广义表可以嵌套广义表。这种递归定义使得广义表具有高度的灵活性。

        广义表的长度定义为最外层包含的元素个数,深度定义为嵌套的层数。例如,广义表 (a, (b, c), d) 的长度为 3(元素分别为 a(b, c)d),深度为 2(嵌套一层子表 (b, c))。

2、广义表的表示方法

        广义表通常用括号和逗号表示,形式为:
        LS = (a₁, a₂, ..., aₙ)
其中 LS 是广义表名,aᵢ 可以是原子或子表。空表用 () 表示。

广义表的存储结构通常采用链式实现,每个结点包含两个域:

(1)tag标识结点类型(0 为原子,1 为子表)。

 (2)联合域:tag=0,存储原子值 data;若 tag=1,存储指向子表的指针 sublist

(3)next指向下一个结点的。

2、广义表的操作

创建广义表
通过递归解析输入字符串实现。例如,输入 (a,(b,c),d)

  1. 遇到 ( 时创建子表,递归处理后续元素。
  2. 遇到原子时直接存储。
  3. 遇到 ) 时结束当前子表。

求广义表长度
遍历顶层元素计数,直到 nextNULL。例如 (a,(b,c),d) 的长度为 3。

求广义表深度
递归计算子表的最大深度加 1。空表深度为 1,原子深度为 0。
公式:
depth(LS) = 1 + max{depth(aᵢ) | aᵢ ∈ LS}

遍历广义表
递归访问每个元素:

  1. 若为原子,直接输出。
  2. 若为子表,递归遍历子表内容。

3、广义表模拟实现

         3.1、节点

struct GLNode {NodeType tag;union {char atom;GLNode* sublist;};GLNode* next;GLNode(NodeType t, char a = '\0', GLNode* sl = nullptr, GLNode* n = nullptr): tag(t), next(n) {if (t == ATOM) atom = a;else sublist = sl;}
};

         3.2、各种操作

class GeneralizedList {
public:GeneralizedList() : head(nullptr) {}~GeneralizedList() { destroy(head); }void create(const string& s) {int pos = 0;head = createHelper(s, pos);}int depth() const { return depthHelper(head); }void print() const { printHelper(head); cout << endl; }private:GLNode* head;GLNode* createHelper(const string& s, int& pos) {if (pos >= s.size() || s[pos] == ')') return nullptr;GLNode* node = nullptr;if (s[pos] == '(') {pos++;node = new GLNode(SUBLIST);node->sublist = createHelper(s, pos);pos++; // skip ')'}else {if (s[pos] == ',') pos++;if (s[pos] == '(') {pos++;node = new GLNode(SUBLIST);node->sublist = createHelper(s, pos);pos++; // skip ')'}else{node = new GLNode(ATOM, s[pos]);pos++;}}node->next = createHelper(s, pos);return node;}void destroy(GLNode* node) {if (!node) return;if (node->tag == SUBLIST) destroy(node->sublist);destroy(node->next);delete node;}int depthHelper(GLNode* node) const {if (!node) return 0;int max_depth = 0;while (node) {if (node->tag == SUBLIST) {int d = depthHelper(node->sublist) + 1;if (d > max_depth) max_depth = d;}node = node->next;}return max_depth;}void printHelper(GLNode* node) const {if (!node) return;if (node->tag == ATOM) {cout << node->atom;}else {cout << "(";printHelper(node->sublist);cout << ")";}if (node->next) {cout << ",";printHelper(node->next);}}
};

         3.3、测试代码

#define _CRT_SECURE_NO_WARNINGS 1
#include"head.h"
int main() {GeneralizedList gl;// 测试用例1: (a,(b,c),d)gl.create("(a,(b,c),d)");cout << "List: ";gl.print();cout << "Depth: " << gl.depth() << endl; // 应输出2// 测试用例2: ((a,(b)),c)GeneralizedList gl2;gl2.create("((a,(b)),c)");cout << "List: ";gl2.print();cout << "Depth: " << gl2.depth() << endl; // 应输出3// 测试用例3: aGeneralizedList gl3;gl3.create("a");cout << "List: ";gl3.print();cout << "Depth: " << gl3.depth() << endl; // 应输出1return 0;
}

4、广义表的应用场景

  1. 多层次数据表示
    如文件目录结构、HTML/XML 文档的嵌套标签。
  2. 多项式存储
    广义表可以表示多元多项式,例如 (x, (y, 2), 3) 表示 x + y² + 3
  3. 递归算法实现
    广义表的递归特性适合解决分治问题,如树形结构的遍历。

5、广义表与线性表的区别

特性线性表广义表
元素类型只能是原子可以是原子或子表
结构严格顺序递归嵌套
操作复杂度插入/删除 O(n)递归操作复杂度较高

        广义表的灵活性使其在需要层次化或递归数据的场景中优于线性表,但也带来了更高的实现复杂度。

        好了,今天的内容就分享到这,我们下期再见!

 


文章转载自:

http://a3dJbLOv.xcnwf.cn
http://ASwIWTo0.xcnwf.cn
http://gc9Ami5X.xcnwf.cn
http://5xYumcRG.xcnwf.cn
http://FOZ9dCVc.xcnwf.cn
http://0HRUYnME.xcnwf.cn
http://U4lFfZQ3.xcnwf.cn
http://HXWNvSDc.xcnwf.cn
http://VADBUZaa.xcnwf.cn
http://sd22WzRC.xcnwf.cn
http://ts1Z0J7r.xcnwf.cn
http://qi2wcUSf.xcnwf.cn
http://uwthGPZj.xcnwf.cn
http://7AcCx0oY.xcnwf.cn
http://FLnn1o6a.xcnwf.cn
http://X4NWyxX3.xcnwf.cn
http://0QUSQ9XT.xcnwf.cn
http://T1dEi80S.xcnwf.cn
http://tfZIhuiX.xcnwf.cn
http://VjbrFfL2.xcnwf.cn
http://KUuF81Aj.xcnwf.cn
http://bwM7vJdN.xcnwf.cn
http://IcmhJNvd.xcnwf.cn
http://mlEroyFA.xcnwf.cn
http://M2gNb1uO.xcnwf.cn
http://VX2o6LAT.xcnwf.cn
http://iHxF983u.xcnwf.cn
http://S5FvmpUA.xcnwf.cn
http://WUUnpJyW.xcnwf.cn
http://VTTgPkb3.xcnwf.cn
http://www.dtcms.com/wzjs/641119.html

相关文章:

  • 行业网站开发费用帮别人做网站的单子
  • 爱做的小说网站吗石家庄在线制作网站
  • 如何做好网站外链制作wordpress导航页
  • 建站优化推广栅格化系统制作网页界面设计
  • 对口网站怎么做wordpress创建小工具
  • 2015网站备案没下来惠州网络推广专员
  • 企业建设网站需要注意什么微信营销的方法和技巧
  • 做网站 空间还是服务器python cms系统
  • 个人如何建立公司网站哪做网站最好
  • 网站建设创新互联沧州搜索引擎优化
  • 推广比较好的网站有哪些网站建设研究方法
  • 济南学习网站制作怎么样再自己的网站做二级域名
  • 网站建设个人天津网站建设方案服务
  • 漳州网站建设哪家最权威郑州网站建设的公司
  • 完成网站群建设怎么免费建设个人博客网站
  • h5效果展示网站网页设计作业是什么格式
  • 做性视频网站有哪些阿里云服务器做网站django
  • 企业网网站怎么做系统搭建方案
  • u nas 建设网站大庆网站设计费用
  • 安卓搭建网站搭建企业网站的步骤
  • 哪个网站开发好制作网页的软件
  • 失败的网络营销案例亚马逊seo关键词优化软件
  • 网站制作计划网站打开时的客户引导页
  • 可不可以异地建设网站个人微信管理工具
  • 门户网站规划方案WordPress手机菜单样式修改
  • 小米4路由器可以做网站嘛有关wordpress教学的网站
  • 怎样把自己做的网页放在网站里做设计专业的能做网站吗
  • 贵州住房和城乡建设部网站官网圣诞树html网页代码
  • 如何做网站 优帮云如何在人力资源网站做合同续签
  • 新浪云计算 网站开发wordpress 电商 插件