第3章线性表的推广

本文深入探讨了线性结构的推广形式——数组与广义表,介绍了数组的基本概念及其特殊性,并详细阐述了广义表作为一种非线性数据结构的特点和基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

绪论中,我们介绍了数据结构三要素, 第1章中,讲解了逻辑结构分类中线性结构的第一个部分——一般线性表,第2章讲述了逻辑结构线性结构的第二个部分——受限的线性表。本章开始讲解线性结构的最后一个部分——线性表推广。这里回顾下逻辑结构的分类,如下图所示:

逻辑结构

前几章讨论的线性结构中的数据元素都是非结构的原子类型,元素的值是不可再分的,而本章所讲述的线性表的推广则是表中的数据元素本身也是一个数据结构,常见的形式一般有两种——数组和广义表。

一.数组

1.1定义

数组概念有双重含义,一是数据类型,二是实体(entity)。C语言标准中规定,一个数组类型描述了连续分配的非空的具有特定元素对象类型的对象集合。这些元素对象的类型称为元素类型。数组类型由元素类型与元素的数目确定。

数组名作为数组实体的标识符,具有特殊性,不同于整型、浮点型、指针型或结构类型等变量标识符。这是因为数组是一组元素的聚集,不能把一个聚集看作一个值直接读出(即右值),也不能把一个聚集看作一个地址直接赋值(即左值)。因此,数组名作为左值、右值,在C语言标准中都有特殊规定:

作为sizeof的操作数,数组名代表数组对象本身;
作为取地址运算符&的操作数,数组名代表数组对象本身;
作为字符串字面量用于初始化一个数组;
其他情形,表达式中的数组名从数组类型被转化为指向数组首元素的指针类型表达式(右值)。

1.2基本操作

InitArray(&A)       //初始化数组A
DestroyArray(&A)    //销毁数组A

二.广义表

2.1定义

广义表又称为列表,是一种非线性的数据结构,广义表中放松对表元素的原子限制,容许它们具有其自身结构。

2.2基本操作

InitGList(&L)   //初始化广义表,创建一个空的广义表
DestroyGList(&L)    //销毁广义表
GListLength(L)  //求广义表的长度
GListDepth(L)   //求广义表的深度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值