数据结构之串(上)——串的基本概念与存储结构
1.什么是串
(1)我们先来看一下基本的关系:
数据结构是指两个集合:a.有特定关系的元素的集合(元素集)
b.这些元素之间的关系的集合(关系集)
元素之间的关系有: a.线性关系
b.非线性关系
在各种各样的数据结构中,如果其中的元素是线性关系,我们就称呼这个数据结构为线性表;
如果线性表中的元素集是字符集(即元素类型均为字符型),我们就称这种线性表为串。
(2)必须知道的关于串的基本概念:
串的长度:串中所包含的字符个数称为该串的长度。
空串:长度为零,即不包含任何字符
子串:串中任意个连续字符组成的子序列称为该串的子串,嘿嘿,主串是什么就不用我解释了吧
空格串(空白串):顾名思义,所有字符都是空格
2.串的存储方式
(1)字符数组法(顺序存储结构):
a.将串定义为字符数组,利用串名可以直接访问串值 b.呜呜呜,数组要先分配好存储空间啊,存储空间就固定了啊 c.代码:#define m=100//用户能在100以内定义最大串长 typedef char Sstring[m+1];//0号单元存放串的长度,字符从1号单元存放 Sstring S;//S的类型为Sstring
(2)字符序列法(堆分配存储结构):
a.用一组地址连续的存储单元依次存储串中的序列
b.程序运行时根据串的实际长度动态分配存储空间
c.代码:typedef struct { char *ch;//ch是地址,ch[i]或*ch是元素,我们可以用s.ch[i]来访问字符串s中第i个元素 int length;//s的长度L等于s.length }Hstring;
(3)链式存储
代码:#define m=10//一个地址可存10个字符 typedef struct snode { char ch[m]; struct node*next;//地址 }snode;