C语言数据结构 串的基本操作实例代码
输出结果:
实现代码:
#include<iostream> using namespace std; typedef int Status; #define Max 20 #define OK 1 #define ERROR 0 #define OVERLOE -2 typedef struct//堆分配表示串 { char *ch; int length; }HString; //=================================================================== Status CreatHString(HString &H)//构造字符串 { H.length = 0; H.ch = (char *)malloc(Max*sizeof(char)); for (int i = 0; i < Max; i++) { H.ch[i]=getchar(); H.length++; if (getchar() == '\n') break; } return OK; }//CreatHString //=================================================================== Status PrintHString(HString H)//输出所输入的字符串 { if (H.length == 0) { cout << "空串!" << endl; return ERROR; } else for (int i = 0; i < H.length; i++) cout << H.ch[i] << " "; cout << endl; return OK; }//PrintHString //=================================================================== Status HStringLength(HString H)//求字符串的长度 { cout << "您输入的字符串长度为:" << endl; cout << H.length << endl; return OK; }//HStringLength //=================================================================== Status HStringCompare(HString H, HString T)//求两个字符串长度差(绝对值) { cout << "两个字符串的长度差为:" << endl; int L; L = H.length - T.length; if (L<0) cout << -L << endl; if (L>=0) cout << L << endl; return OK; }//HStringCompare //=================================================================== Status ConcatHString(HString &S, HString H, HString T)//链接H和T { if (!(S.ch = (char *)malloc((H.length + T.length)*sizeof(char)))) exit(OVERLOE); for (int i = 0; i < H.length; i++) S.ch[i] = H.ch[i]; S.length = H.length + T.length; for (int j = H.length; j < S.length; j++) S.ch[j] = T.ch[j-H.length]; return OK; }//ConcatHString //=================================================================== Status SubHString(HString &Sub, HString S, int pos,int len) {//用Sub返回串S的第pos个字符起长度为len的子串 if (pos<1 || pos>S.length) { cout << "输入的位置有误!" << endl; return ERROR; } if (len<0 || len>S.length - pos + 1) { cout << "输入的长度有误!" << endl; return ERROR; } if (!len) { Sub.ch == NULL; Sub.length = 0; } else { Sub.ch = (char *)malloc(len*sizeof(char)); for (int i = 0; i < len ; i++) Sub.ch[i] = S.ch[pos + i - 1]; Sub.length = len; } return OK; }//SubHString //=================================================================== Status ClearHString(HString &H)//将H清为空串 { if (H.ch) { free(H.ch); H.ch = NULL; } H.length = 0; return OK; }//ClearHString //=================================================================== void main() { HString S,H,T; cout << "请输入一个字符串(按回车键结束):" << endl; CreatHString(H); cout << "现在串中的字符为:" << endl; PrintHString(H); HStringLength(H); cout << "请再输入一个字符串(按回车键结束):" << endl; CreatHString(T); HStringCompare(H, T); ConcatHString(S, H, T); cout << "现在串中的字符为:" << endl; PrintHString(S); HString Sub; int pos, len; cout << "请输入截取位置pos及长度len:" << endl; cin >> pos >> len; SubHString(Sub, S, pos, len); cout << "截取的子串为:" << endl; PrintHString(Sub); ClearHString(S); cout << "检验S清空后是否为空:" << endl; PrintHString(S); }//main
本文向大家介绍C语言数据结构中数制转换实例代码,包括了C语言数据结构中数制转换实例代码的使用技巧和注意事项,需要的朋友参考一下 C语言数据结构中数制转换实例代码 数制转换是严蔚敏的数据结构那本书中的例子,但是那本书中的例子大都是用伪代码的形式写的,不是很容易理解和实现,对初学者造成了不小的困扰,在这里我们将其详尽的实现出来,以便初学者调试和运行,并从中有所收获。 感谢阅读,希望能帮
本文向大家介绍C语言数据结构实现字符串分割的实例,包括了C语言数据结构实现字符串分割的实例的使用技巧和注意事项,需要的朋友参考一下 C语言数据结构实现字符串分割的实例 以下为“字符串分割”的简单示例: 1. 用c语言实现的版本 运行结果如下所示: 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍数据结构串的操作实例详解,包括了数据结构串的操作实例详解的使用技巧和注意事项,需要的朋友参考一下 数据结构串的操作实例详解 串是一种特殊的线性表,它的每个结点是一个字符,所以串也称作字符串。 关于串的操作主要有求串长,串复制,串连接,求子串,串插入,串删除,子串定位等。串的操作也是C语言笔试中常考的一部分。 下面的代码实现了串的主要操作。 上面的代码就是串的相关操作。
本文向大家介绍C语言创建和操作单链表数据结构的实例教程,包括了C语言创建和操作单链表数据结构的实例教程的使用技巧和注意事项,需要的朋友参考一下 1,为什么要用到链表 数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性。但数组也同样存在一些弊病。如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3 0个大小的数组,有时需要5 0个
本文向大家介绍C语言实现数据结构和双向链表操作,包括了C语言实现数据结构和双向链表操作的使用技巧和注意事项,需要的朋友参考一下 数据结构 双向链表的实现 双向链表中的每一个结点都含有两个指针域,一个指针域存放其后继结点的存储地址,另一个指针域则存放其前驱结点的存储地址。 双向链表结点的类型描述: 其中,prior域存放的是其前驱结点的存储地址,next域存放的是其后继结点的存储地址。 双
本文向大家介绍数据结构 C语言实现循环单链表的实例,包括了数据结构 C语言实现循环单链表的实例的使用技巧和注意事项,需要的朋友参考一下 数据结构 C语言实现循环单链表的实例 实例代码: 如图: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!