数据结构(超详细讲解!!)第十八节 串(堆串)

本文详细介绍了堆串的概念,通过一维数组heap表示动态存储空间,并使用int start指向未分配区域的开始地址。堆串的定义包含len和start两个域,用于指示串的长度和起始位置。在C语言中,可以使用malloc()和free()函数来实现堆串的动态存储管理。文章还列举了堆串的基本操作,包括初始化、录入、插入、删除、遍历、复制、判空、比较、求串长、清空、连接、求子串和定位。
摘要由CSDN通过智能技术生成

1.定义

假设以一维数组heap [MAXSIZE] 表示可供字符串进行动态分配的存储空间,并设 int start 指向heap 中未分配区域的开始地址(初始化时start =0) 。在程序执行过程中,当生成一个新串时,就从start指示的位置起,为新串分配一个所需大小的存储空间,同时建立该串的描述。这种存储结构称为堆结构。 此时,堆串可定义如下:

typedef  struct
{int   len; 
 int   start; 
} HeapString; 

其中len域指示串的长度, start域指示串的起始位置。借助此结构可以在串名和串值之间建立一个对应关系,称为串名的存储映象。系统中所有串名的存储映象构成一个符号表。 

 在C语言中,已经有一个称为“堆”的自由存储空间,并可用malloc()和free()函数完成动态存储管理。因此,我们可以直接利用C语言中的“堆”实现堆串。此时,堆串可定义如下:

typedef  struct
{  
    char  * ch;  
    int   len; 
} HString; 

2.基本操作

1.初始化

//初始化
HString * Init_HString( )
{	HString *s;	
	s = (HStrin
  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值