字符串
Posted lin546
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串相关的知识,希望对你有一定的参考价值。
串
一、串的基本概念
- 串(也称作字符串)是由n(n≥0)个字符组成的有限序列。?
- 一个串中任意个连续的字符组成的子序列称为该串的子串。 包含子串的串称为该子串的主串。
- 一个字符在一个串中的位置序号(为大于等于0的正整数)称为该字符在串中的位置。当且仅当这两个串的值完全相等时,称这两个串相等。
二、串数据结构类型
数据集合:串的数据集合可以表示为字符序列s0, s1,… , sn-1,每个数据元素的数据类型为字符类型。
操作集合:
(1)取字符charAt(index) :取index下标的字符返回。 ?
(2)求长度length():返回串的长度。
(3)比较compareTo(anotherString):比较当前对象串和串anotherString的Unicode码值的大小。?
(4)取子串substring(beginIndex, endIndex):取当前对象串中从beginIndex下标开始、至endIndex下标的前一下标止的子串。?(5)连接concat(str):把串str连接到当前对象串的末尾。
(6)插入子串insert(str, pos):在当前对象串的第pos个字符前插入子串str。
(7)删除子串delete(beginIndex, endIndex):删除当前对象串中从beginIndex下标开始、至endIndex下标的前一下标止的子串?
(8)查找子串index(subStr, start):在当前对象串的start下标开始,查找是否存在子串subStr。
三、串的存储结构
1、串的顺序存储结构
串的顺序存储结构就是用字符类型数组存放串的所有字符。表示串的长度通常有两种方法:
(1)设置一个串的长度参数。
(2)在串值的末尾添加结束标记。
串值长度的第一种表示方法又可分为定长顺序存储结构和变长顺序存储结构。定长顺序存储表示结构体定义如下:
cpp typedef struct{ char str[maxSize+1]; int length; }
变长顺序存储表示结构体定义如下:
typedef struct{
char *str;
int length;
}
2、串的链式存储结构
串的链式存储结构就是把串值分别存放在构成链表的若干个结点的数据元素域上。 有单字符结点链和块链两种。?
单字符结点链就是每个结点的数据元素域只包括一个字符。块链就是每个结点的数据元素域包括若干个字符。
#define CHUNKSIZE 80 //可由用户定义的块大小
typedef struct Chunk{
char ch[CHUNKSIZE];
struct Chunk *next;
}Chunk;
typedef struct{
Chunk *head,*tail;
int length;
}LString;
四、串的基本操作
#include <iostream>
using namespace std;
#define MaxStrSize 256
typedef struct mystring
{
char str[MaxStrSize];
int len;
}MyString;
//求串的长度
int StrLength(MyString &S)
{
int i=0;
while(S.str[i]!='