(数据结构)串

目录

一、串的基本概念

二、串的顺序存储结构

2.1定长顺序串

 2.2堆串

三、串的链式存储及串的应用

3.1串的应用


一、串的基本概念

1、串是特定结构的线性表

串是由单字符组成的线性表;每个数据元素就是一个单字符。

二、串的顺序存储结构

2.1定长顺序串

1、串的定长顺序存储定义

#define MAXLEN 20
typedef struct{
    char ch[MAXLEN];
    int len;
}SString;

2 、串的插入

将串由插入前的AB变为ACB(插入部分为C)。

3、串的模式匹配

算法思想:

/*求串t在串s中的位置*/
int StrIndex(SString s,int pos,SString t)
{
    int i,j;
    /*t空串*/
    if(t.len == 0)return 0;
    i = pos;
    j = 0;
    while(j<s.len && j<t.len){
        /*相等指针均往后移*/    
        if(s.ch[i] == t.ch[j]){
            i++;
            j++;
        }else{
            /*不相等s的指针向后移一位,t的指针初始化*/
            i = i-j+1;
            j = 0;
        }
    }
    if(j >= t.len)return(i-j);//找到了
    else 
        return -1;//没找到
}

 

 2.2堆串

堆:系统将一个地址连续、容量很大的存储空间作为字符串的可用空间。

每建立新串时,需提供串值的起始位置指针和串长度,系统从堆串区分配空间。

1、堆串的存储表示

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

其中len指示串的长度ch域指示串的起始地址。 

三、串的链式存储及串的应用

定义:串的链式存储

单个结点称为,包括两个域:data、next

结点大小:data域存放字符的个数

链域大小:next域占用字符个数

块链结构:是一个链表,需要头尾指针


块链结构可定义为如下:

#define BLOCK_SIZE 4
typedef struct Block{
    char ch[BLOCK_SIZE];
    struct Block *next;
}Block;

typedef struct{
    Block *head;
    Block *tail;
    int len;
}BLString;

3.1串的应用

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值