串——定长顺序表示

严版数据结构73页。
IDE:VS2015

#include<iostream>
#include<string>

#define Status int
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OK 1
#define MAXSTRLEN 255
typedef unsigned char SString[MAXSTRLEN + 1];

using namespace std;

Status Concat(SString &T, SString S1, SString S2)
{
	bool uncut;
	if (S1[0] +S2[0] <= MAXSTRLEN)//未被截断
	{
		for (int i = 1; i <= S1[0]; i++)
		{
			T[i] = S1[i];
		}
		for (int i = 1; i <= S2[0]; i++)
		{
			T[i + S1[0]] = S2[i];
		}
		T[0] = S1[0] + S2[0];
		uncut = TRUE;
	}
	else if (S1[0] < MAXSTRLEN)//截断
	{
		for (int i = 1; i <= (int)S1[0]; i++)
		{
			T[i] = S1[i];
		}
		for (int i = 1; i <= MAXSTRLEN - (int)S1[0]; i++)
		{
			T[i + S1[0]] = S2[i];
		}
		T[0] = MAXSTRLEN;
		uncut = FALSE;
	}
	else {//截取,只取S1
		for (int i = 0; i <= MAXSTRLEN; i++)
		{
			T[i] = S1[i];
		}
		uncut = FALSE;
	}
	return uncut;
}

Status SubString(SString &Sub, SString S, int pos, int len)
{
	if (pos<1 || pos>(int)S[0] || len<0 || len>(int)S[0] - pos + 1)
		return ERROR;
	for (int i = 1; i <= len; i++)
	{
		Sub[i] = S[pos + i-1];
	}
	Sub[0] = len;
	return OK;
}


void main()
{
	SString T, S1, S2, S, Sub;
	int i, pos, len;
	cout << "输入串S1的长度:";
	cin >> S1[0];
	S1[0] -= 48;
	getchar();
	cout << "输入串S1的值:";
	for (i = 1; i <= S1[0]; i++)
	{
		cin >> S1[i];
	}
	cout <<"输出串S1的值:"<< endl;
	for (i = 1; i <= S1[0]; i++)
	{
		cout << S1[i];
	}
	cout << endl;
	cout << "输入串S2的长度:";
	cin >> S2[0];
	S2[0] -= 48;
	getchar();
	cout << "输入串S2的值:";
	for (i = 1; i <= S2[0]; i++)
	{
		cin >> S2[i];
	}
	cout <<"输出串S2的值:"<< endl;
	for (i = 1; i <= S2[0]; i++)
	{
		cout << S2[i];
	}
	cout << endl;
	Concat(T, S1, S2);
	cout << "输出串S1和串S2的联接串T的值:" << endl;
	for (i = 1; i <= T[0]; i++)
	{
		cout << T[i];
	}
	cout << endl;
	cout << "输入串S的长度:";
	cin >> S[0];
	S[0] -= 48;
	getchar();
	cout << "输入串S的值:" << endl;
	for (i = 1; i <= S[0]; i++)
	{
		cin >> S[i];
	}
	cout << "输出串S的值:" << endl;
	for (i = 1; i <= S[0]; i++)
	{
		cout << S[i];
	}
	cout << endl;
	cout << "输入串S的子串Sub的开始字符位置:";
	cin >> pos;
	cout << "输入串S的子串Sub的长度:";
	cin >> len;
	SubString(Sub, S, pos, len);
	cout << "输出子串Sub的值:" << endl;
	for (i = 1; i <= Sub[0]; i++)
	{
		cout << Sub[i];
	}
	cout << endl;
	system("pause");

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值