数据结构 (三) – 串、数组和广义表
部分转载LUOFANG SHIJIE 的
串
串跟线性表一样,有顺序存储结构和链式存储结构,但是在考虑到效率的问题,常常使用顺序存储结构
串的顺序存储结构
#define Maxsize 255
typedef struct
{
char ch[Maxsize +1]; //存储串的一维数组
int length; //串的当前长度
}SString;
为了便于说明,一般顺序存储的字符串都是采用下标为1开始的,下标为0的分量闲置不动
typedef struct
{
char *ch;
int length;
}HString;
数组的顺序存储方式
1.以列序为主序的存储方式
2.行序为主序的存储方式
广义表
线性表的推广
广义表的三个特点:
- 广义表的元素可以是子表,而子表的元素还可以是子表
- 广义表可以为其他表而共享
- 广义表可以是一个递归的表,即广义表本身也可以是本身的一个子表
广义表中两个重要的运算
- 取表头:取出的表头为非空广义表的第一个元素,他可以是一个单原子,也可以是一个子表。
- 取表尾:取出的表尾为除去表头之外,由其余元素构成的表,则表尾一定是一个广义表。
广义表的存储结构
广义表常常采用链式存储结构(头、尾链表的存储结构和扩展性链表的存储结构)