C++语言数据结构 串的基本操作实例代码

 更新时间:2017年04月15日 16:07:14   投稿:lqh  
这篇文章主要介绍了C语言数据结构 串的基本操作实例代码的相关资料,需要的朋友可以参考下

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语言具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 解析ActiveMQ的使用说明总结

    解析ActiveMQ的使用说明总结

    本篇文章是对ActiveMQ的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++实现map和set封装详解

    C++实现map和set封装详解

    欢迎阅读本指南,将带您深入了解C++中map和set的实现细节,本文将重点介绍如何使用C++标准库中的容器来优化代码,同时提供实用的示例和技巧,无论您是初学者还是资深开发者,本指南都将成为您掌握C++中map和set封装的有力助手,需要的朋友可以参考下
    2024-03-03
  • C++中的基类和派生类构造函数示例详解

    C++中的基类和派生类构造函数示例详解

    这篇文章主要介绍了C++的基类和派生类构造函数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • C/C++ MD5算法的实现代码

    C/C++ MD5算法的实现代码

    下面就将网上有关MD5算法一些知识整理一下,方面自己查阅,需要的朋友可以参考下
    2017-07-07
  • C++实现三子棋游戏详细介绍(附代码)

    C++实现三子棋游戏详细介绍(附代码)

    大家好,本篇文章主要讲的是C++实现三子棋游戏详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 清除3389远程登录日志

    清除3389远程登录日志

    这篇文章主要介绍了清除3389远程登录日志示例,需要的朋友可以参考下
    2014-01-01
  • C语言实现窗口抖动

    C语言实现窗口抖动

    这篇文章主要为大家详细介绍了C语言实现窗口抖动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • C++顺序表实现图书管理系统

    C++顺序表实现图书管理系统

    这篇文章主要为大家详细介绍了C++顺序表实现图书管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C++11的functional模块介绍和使用案例

    C++11的functional模块介绍和使用案例

    functional模块是C++ 11提供了一组函数对象和算法,用于增强C++的函数式编程能力,本文主要介绍了C++11的functional模块介绍和使用案例,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02

最新评论