字符串数据结构实现(数组方式)

来源:互联网 发布:php图片木马生成器 编辑:程序博客网 时间:2024/05/22 01:31

在基本的数据类型中,并没有字符串这种类型,所以字符串算是一种数据结构。其实现也很简单,主要用char基本类型来实现。这里用数组实现动态增长,也可以用链表来实现。

数组和链表的优缺点比较:

1.数组实现基本的操作较为容易。
2.数组的查找速度比较快。
3.数组存储中文字符比较难实现(所以这里未实现对中文的支持)
4.链表的空间利用率比较高 (不像数组一样,一到瓶颈就翻倍增长,并伴随着复制数据的时间开销)
5.链表的添加、删除、插入操作比数组快。

C代码实现下载
C++代码实现下载
java代码实现下载
(备用下载地址 )

实现的功能如下:
(主要以C++来举例)
1.int ReAlloc(); //重新分配空间

2.void InitStr(char* str, int value, int len); //初始化字符串

3.int _csize(const char* str); //计算字符串长度(窄字符)

4.int _wsize(const wchar_t* str); //计算字符串长度(宽字符)

5.int Size(); //获取字符串大小

6.void PushRear(char ch); //添加一个字符到最后

7.void PushRear(char* sub); //添加字符串到最后

8.void PushFront(char ch); //添加一个字符到前面

9.void PushFront(char* sub); //添加字符串到前面

10.void PopRear(int n = 1); //删除最后n个字符

11.void PopFront(int n = 1 ); //删除前面n个字符

12.int DeleteSub(int start, int end); //根据范围删除子串

13.int DeleteSubLen(int start, int len); //根据起始位置和长度删除子串

14.char* SubString(int start, int end); //根据范围截取子串

15.char* SubStringLen(int start, int len); //根据起始位置和长度截取子串

16.int Replace(char s, char d); //替换字符(符合的都会替换)

17.int Replace(int local, char d); //替换指定位置字符

19.int Replace(char* s, char* d); //替换子串(符合的都会替换)

20.int Replace(int local, char* d); //替换指定位置子串

21.int FindFirst(char ch); //查找字符第一次出现的位置

22.int FindFirst(char* sub); //查找子串第一次出现的位置

23.int FindLast(char ch); //查找字符最后一次出现的位置

24.int FindLast(char* sub); //查找子串最后一次出现的位置

25.int Find(char ch, int start); //给定起始位置查找字符出现的位置

26.int Find(char* sub, int start); //给定起始位置查找子串出现的位置

27.void Insert(char ch, int local); //插入字符

28.void Insert(char* sub, int local); //插入子串

29.int AppearTimes(char ch); //统计字符出现过的次数

30.int AppearTimes(char* sub); //统计子串出现过的次数

31.bool Equal(String& s1,String& s2); //比较两个String是否相等

32.bool Equal(const char* s1, const char* s2); //比较两个String是否相等

33.char* GetString(); //获取字符串

34.void Print(int start, int end); //打印字符串

35.void Clear(); //清除字符串

36.void Destroy(); //销毁字符串

0 0
原创粉丝点击