串的基本操作(C++)
来源:互联网 发布:阿里云ecs扩容 编辑:程序博客网 时间:2024/06/06 10:01
#include"iostream"using namespace std;//=================串==============================/*两个串是否相等,必须是它们串的长度以及它们各个对应位置的字符都相等时,才算是相等.串的顺序存储结构的缺点是字符串的截断,截断就是超过预定义长度的串值被舍去.*///=========串的顺序存储===========/*一般T[0]存放串的大小*/const int MAXSIZE = 40;struct StringType{char Str[MAXSIZE];int length;struct StringType(int x) :length(0){};};/*输出字符串T*/bool StringVisit(const StringType *T){if (T->length==0){cout << "空串!" << endl;return false;}else{for (int i = 0; i <T->length; i++)cout << T->Str[i];cout << endl;return true;}}/*生成一个其值为chars的串T*/bool StrCreate(StringType *T, char *chars){if (strlen(chars) > MAXSIZE)return false;else{T->length = strlen(chars);for (int i = 0; i <T->length; i++)T->Str[i] = chars[i];return true;}}/* 返回串的元素个数 */int StrLength(StringType *T){return T->length;}/*串比较: 初始条件: 串S和T存在 操作结果: 若S>T,则返回值>0;若S=T,则返回值=0;若S < T,则返回值< 0 */int StrComp(const StringType *T, const StringType *S){for (int i = 0; i < T->length && i < S->length; i++){if (S->Str[i]!=T->length)return S->Str[i] - T->Str[i];}return S->length - T->length;}/* 用T返回S1和S2联接而成的新串。若未截断,则返回TRUE,否则FALSE */bool Contact(StringType *T, StringType *S1, StringType *S2){if (S1->length + S2->length <= MAXSIZE){for (int i = 0; i < S1->length; i++)T->Str[i] = S1->Str[i];for (int j = 0; j < S2->length; j++)T->Str[j] = S2->Str[j];T->length = S1->length + S2->length;return true;}else{for (int i = 0; i < S1->length; i++)T->Str[i] = S1->Str[i];for (int j = 0; j < MAXSIZE-S1->length; j++)T->Str[j] = S2->Str[j];T->length = MAXSIZE;return false;}}/* 用Sub返回串S的第pos个字符起长度为len的子串。 */bool SubString(StringType *T, StringType *Sub, int pos, int len){if (T->length < 0 || pos < 0 || len<0 || pos>T->length || len>T->length - pos)return false;else{Sub->length = len;for (int i = 0; i < len; i++)Sub->Str[i] = T->Str[pos + i];return true;}}//kmp模式匹配算法int main(){char *cc = "asdfchjksj";StringType *T = new StringType(0);StrCreate(T, cc);return 0;}
更新中.........
阅读全文
0 0
- 串的基本操作(C++)
- 二叉树的基本操作(C++)
- 链表的基本操作(C++)
- 栈的基本操作(C++)
- 顺序表的基本操作(C++)
- 链队列的基本操作(C++)
- C的大数基本操作
- C基本的读写操作
- 【C++】单链表的基本操作
- C++---文件的基本操作
- 【C#】特性的基本操作
- c++string的基本操作
- 串最基本的5个操作的C实现
- 数据结构栈的基本的操作(C语言)
- c语言:定长顺序串的基本操作实实现
- 双向链表的基本操作(C语言)
- 顺序表的基本操作(C语言)
- 链表的基本操作(c实现)
- vector用法
- Unity使用DLL
- socket.io与node.js api 调用示例
- hdu 1873 看病要排队(优先队列)
- Kotlin for Android(五)Kotlin类和对象
- 串的基本操作(C++)
- E
- VS2015快捷键
- [FWT] 51nod 算法马拉松26 A. A国的贸易
- 一道android笔试题目
- 自用(Spring 配置文件 和详细笔记)
- poj 2299 Ultra-QuickSort (树状数组)
- Hibernate学习笔记
- 【二分图】poj 3020 Antenna Placement