C语言数据结构:串、数组与广义表梳理及作业详解

需积分: 0 0 下载量 164 浏览量 更新于2024-08-05 收藏 673KB PDF 举报
在《数据结构(C语言版)》第四章中,主要讨论了串、数组和广义表等主题。首先,串被定义为一种特殊的线性表,其独特之处在于其数据元素是字符,选项B准确描述了这一点。串可以视为一个字符的有限序列,不同于普通线性表的元素类型限制。 章节中涉及的一个练习题目指出,给定字符串"software",其子串的个数可以通过计算真子串的数量来得到,根据公式,总子串数为 (n*(n+1))/2,其中 n 是字符串长度。在这个例子中,子串总数为 37,包括空串。 接下来是二维数组的相关知识。以行序为主序存储的二维数组A,如array[1..100,1..100],存储地址计算涉及到矩阵的行数和列数。给定基地址10,计算元素LOC[5,5]的地址时,利用公式((i-1)*列数+(j-1)*行数+基地址)得到答案B.818。 针对三维数组A[0..4,-1..-3,5..7],其元素个数的计算显示了如何考虑数组边界和步进规则。这个数组实际上是不规则的,但通过计算长边、宽边和高边的元素数量,得出共有45个元素。 在处理对称矩阵时,题目要求找出10阶对称矩阵中a8,5的地址。由于对称矩阵只存储下三角部分,我们计算出a8,5之前所有元素的地址,再加上它所在行的元素数量,得出地址为33。 此外,数组A[0..5,0..6]的元素占用5个字节,这表明了内存分配和存储大小对实际编程中的影响。 本章的课程内容围绕着数据结构的核心概念展开,旨在帮助学生理解并熟练运用这些基础知识,特别是通过KMP算法和矩阵存储方式的理解,强化对字符串处理和多维数组操作的掌握。作业习题旨在实践理论知识,并提供了一个巩固所学内容的平台。