顺序串的练习
#include<iostream>
#include<stdio.h>
#define MAXSIZE 1000
typedef struct string
{
char ch[MAXSIZE + 1];
int length;
}string;
int StringAssign(string* S, char chs[]) {
int i = 0;
while (chs[i] != '\0') {
S->ch[i] = chs[i];
i++;
}
S->length = i;
return 0;
}
void StringCopy(string* S1, string* S2) {
int i = 0;
while (S2->ch[i] != '\0') {
S1->ch[i] = S2->ch[i];
i++;
}
S1->length = S2->length;
}
int LengthString(string* S) {
return S->length;
}
int ShowString(string* S) {
if (S->length <= 0)
return 0;
else {
for (int i = 0; i < S->length; i++) {
printf("%c", S->ch[i]);
}
printf("\n");
}
}
int StringCompare(string* S1, string* S2) {
int i = 0;
while (S1->ch[i] != '\0' && S2->ch[i] != '\0') {
if ((int)(S1->ch[i]) > (int)(S2->ch[i]))
return 1;
else if ((int)(S1->ch[i]) < (int)(S2->ch[i]))
return -1;
else {
i++;
}
}
if (S1->ch[i] == '\0' && S2->ch[i] != '\0')
return -1;
else if (S1->ch[i] != '\0' && S2->ch[i] == '\0')
return 1;
else
return 0;
}
int ConcatString(string* S, string* S1, string* S2) {
int i = 0, j = 0;
for (; i < S1->length; i++) {
S->ch[i] = S1->ch[i];
}
for (; j < S2->length; j++, i++)
S->ch[i] = S2->ch[j];
S->length = i;
}
int SubString(string* Sub, string* S, int pos, int len) {
if (pos <= 0 || len >= S->length || len <= 0 || pos > S->length - len + 1) {
printf("输入错误!!!");
return 0;
}
else {
int i = 0;
for (; i < len; i++,pos++) {
Sub->ch[i] = S->ch[pos];
}
Sub->length = i;
return 1;
}
}
int StrDelete(string* S, int pos, int len) {
if (len < 1 || pos < S->length + len - 1)
{
printf("输出错误!!!");
return 0;
}
else{
for (int i = pos + len; i < S->length;i++) {
S->ch[i - len] = S->ch[i];
}
S->length -= len;
return 1;
}
}
int Index(string* S, string* T, int pos) {
if (pos<1 || pos>S->length - 1)
{
printf("出现错误!!!");
return 0;
}
else {
int j = 0;
for (int i = pos; i < S->length-1; i++,j++) {
T->ch[j] = S->ch[i];
}
T->length = j;
}
}