顺序串的基本操作
#include<iostream>
using namespace std;
const int MaxSize = 50;
typedef struct {
char data[MaxSize] = {
"\n"};//在这里把串初始化为换行结束符,结尾就不会出现很多烫字了
int length;//讲实话为什么这样初始化一个“\n''还是不太清楚
}SqString;
//输入字符串生成串
void StrAssign(SqString& s, char cstr[])
{
int i;
for (i = 0;cstr[i] != '\0';i++)
s.data[i] = cstr[i];
s.length = i;
}
//串的复制
void StrCopy(SqString& s, SqString t)//串的复制
{
int i;
for (i = 0;i < t.length;i++)
s.data[i] = t.data[i];
s.length = t.length;
}
//判断串是否相同
bool StrEqual(SqString s, SqString t)
{
bool same = true;
int i;
if (s.length != t.length)
same = false;
else
for(i=0;i<s.length;i++)
if (s.data[i] != t.data[i])
{
same = false;
break;
}
return same;
}
//输出串的长度
int StrLength(SqString s)
{
return s.length;
}
//连接两条字符串
SqString Concat(SqString s, SqString t)
{
SqString str;
int i;
str.length = s.length + t.length;
for (i = 0;i < s.length;i++)
str.data[i] = s.data[i];
for (i = 0;i < t.length;i++)
str.data[s.length + i] = t.data[i];
return str;
}
//求子串
SqString SubStr(SqString s, int i, int j)
{
int k;
SqString str;
str.length = 0;
if (i <= 0 || i > s.length || j<0 || i + j - 1>s.length)
return str;
for (k = i - 1;k < i + j - 1;k++)
str.data[k - i + 1] = s.data[k];
str.length = j;
return str;
}
//把顺序串s2插入顺序串s1的第i个位置
SqString InsStr(SqString s1, int i, SqString s2)
{
int j;
SqString str;
str.length = 0;
if (i <= 0 || i > s1.length + 1)
return str;
for