编写算法实现顺序串的基本操作,strcompare(s,t),C语言
时间: 2023-11-11 08:05:37 浏览: 140
以下是顺序串的基本操作实现,包括 strcompare(s, t) 函数的实现:
```c
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100 // 定义顺序串的最大长度
typedef struct {
char data[MAXSIZE]; // 存储串的字符数组
int length; // 串的实际长度
} SqString; // 顺序串的类型定义
// 初始化串
void InitString(SqString *s) {
s->length = 0;
}
// 生成串
void CreateString(SqString *s, char str[]) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
s->data[i] = str[i];
}
s->length = len;
}
// 输出串
void PrintString(SqString s) {
for (int i = 0; i < s.length; i++) {
printf("%c", s.data[i]);
}
printf("\n");
}
// 串复制
void CopyString(SqString *s, SqString t) {
for (int i = 0; i < t.length; i++) {
s->data[i] = t.data[i];
}
s->length = t.length;
}
// 串比较
int StrCompare(SqString s, SqString t) {
int i = 0;
while (i < s.length && i < t.length) {
if (s.data[i] < t.data[i]) {
return -1;
} else if (s.data[i] > t.data[i]) {
return 1;
}
i++;
}
if (s.length == t.length) {
return 0;
} else if (s.length < t.length) {
return -1;
} else {
return 1;
}
}
int main() {
SqString s, t;
char str1[] = "abcdefg";
char str2[] = "abcde";
CreateString(&s, str1);
CreateString(&t, str2);
printf("s = ");
PrintString(s);
printf("t = ");
PrintString(t);
printf("strcompare(s, t) = %d\n", StrCompare(s, t));
return 0;
}
```
在主函数中,我们先创建了两个顺序串 s 和 t,并分别对它们进行初始化和赋值。然后调用了 StrCompare 函数对它们进行比较,最后输出比较的结果。
注意在 StrCompare 函数中,我们使用了 while 循环来逐个比较两个串的字符,如果遇到不同的字符就返回 -1 或 1,如果两个串的长度相同并且所有字符都相同,就返回 0。如果其中一个串的长度比另一个串短,就认为短的串小,返回 -1;如果长的串大,就返回 1。
阅读全文