第五节、字符串

一、数据结构

​ 1.顺序存储

1
2
3
4
5
6
#define MaxSize 100

typedef struct {
char ch[MaxSize];
int len;
}SqString;

2.链式存储

1
2
3
4
typedef struct node {
char data;
struct node * next;
}LinkString;

二、顺序串基本操作

  • 串的赋值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void Assign(SqString &s,chat t[])
    {
    int i = 0;
    while(t[i]!= '/0')
    {
    s.ch[i] = t[i];
    i++;
    }
    s.len = i;
    }
  • 串的复制

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void StrCopy(SqString &s,SqString t)
    {
    int ;
    for(i=0;i<t.len;i++)
    {
    s.ch[i] = t.ch[i]

    }
    s.len = t.len
    }
  • 求串的长度

    1
    2
    3
    4
    int LenStr(SqString s)
    {
    return s.len
    }
  • 判断两个串是否相等

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    int StrEqual(SqString s,SqString t)
    {
    int i = 0;
    if(s.len != t.len)
    {
    return 0
    }
    else
    {
    for(int i = 0;i < t.len;i++)
    {
    if(s.ch[i]!=t.ch[i])
    return 0;
    }
    return 1;
    }
    }
  • 串的拼接

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SqString Concat(SqString s,SqString t)
    {
    SqString r;
    int i,j;
    for(int i=0;i < s.len;i++)
    {
    r.ch[i] = s.ch[i];
    }
    for(int j = 0;j < t.len;j++)
    {
    r.ch[s.len+j] = t.ch[j];
    }
    r.len = s.len + j.len ;
    return r;
    }
  • 求子串

    1
      
  • 查找子串的位置

  • 插入子串

  • 删除子串

  • 替换子串

  • 输出串

二、