数据结构顺序串的基本操作(C/C++实现)

数据结构顺序串的基本操作(C/C++实现)

注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据

涉及基本运算流程

  1. 建立串 s = ‘’abcdefghijklnm’'和串s1 = ‘’xyz‘’
  2. 输出串s
  3. 输出串s的长度
  4. 在串s的第9个字符位插入串s1而产生串s2
  5. 输出串s2
  6. 删除串s的第2个字符开始的5个字符而产生串s2
  7. 输出串s2
  8. 将串s的第2个字符开始的第5个字符替换成串s1而产生串s2
  9. 输出串s2
  10. 提取串s的第2个字符开始的10个字符而产生串s3
  11. 输出串s3
  12. 将串s1和串s2连接起来而产生串s4
  13. 输出串s4

GitHub地址(包含.cpp文件和可执行程序exe)

我的数据结构GitHub地址

源代码(经VS2015、devC++编译器运行通过)

#include "string.h"
#include "stdio.h"    
#include "stdlib.h"   
#include "io.h"  
#include "math.h"  
#include "time.h"

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define MAXSIZE 40 /* 存储空间初始分配量 */

typedef int Status;		/* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int ElemType;	/* ElemType类型根据实际情况而定,这里假设为int */

typedef char String[MAXSIZE + 1]; /*  0号单元存放串的长度 */

 /* 生成一个其值等于chars的串T */
Status StrAssign(String T, char *chars)
{
   

													/*strlen-->检测字符串长度*/
	int i;
	if (strlen(chars)>MAXSIZE)
		return ERROR;
	else
	{
   	
		/*T[0]存放串的长度*/
		T[0] = strlen(chars);


		for (i = 1; i <= T[0]; i++)
			T[i] = *(chars + i - 1);
		return OK;
	}
}

/* 由串S复制得串T */
Status StrCopy(String T, String S)
{
   
	int i;
	for (i = 0; i <= S[0]; i++)
		T[i] = S[i];
	return OK;
}

/* 若S为空串,则返回TRUE,否则返回FALSE */
Status StrEmpty(String S)
{
   
	if (S[0] == 0)
		return TRUE;
	else
		return FALSE;
}

/*  初始条件: 串S和T存在 */
/*  操作结果: 若S>T,则返回值>0;若S=T,则返回值=0;若S<T,则返回值<0 */
int StrCompare(String S, String T)
{
   
	int i;
	for (i = 1; i <= S[0] && i <= T[0]; ++i)
		if (S[i] != T[i])
			return S[i] - T[i];
	return S[0] - T[0];
}

/* 返回串的元素个数 */
int StrLength(String S)
{
   
	return S[0];
}

/* 初始条件:串S存在。操作结果:将S清为空串 */
Status ClearString(String S)
{
   
	S[0] = 0;/*  令串长为零 */
	return OK;
}

/* 用T返回S1和S2联接而成的新串。若未截断,则返回TRUE,否则FALSE */
Status Concat(String T, String S1, String S2)
{
   
	int i;
	if (S1[0] + S2[0] <=
  • 28
    点赞
  • 209
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值