試編寫一個函式,實現在順序儲存方式下字串的strcompare(S1,S2)運算
先介紹一下字串的順序儲存
字串其實就是一種特殊的線性表,學過線性表後我們知道,線性表有順序儲存和鏈式儲存兩種儲存結構,
那麼很容易想到字串也有兩種基本的儲存結構:順序串和鏈式串。
其實也沒什麼好說的字串都知道,不就是0個或多個字元構成的有限序列嘛
比如 T= “ABCD”
順序表也剛剛學過,我前面的文章貌似有,連在一起不就是順序串嘛//手動滑稽QZQ
步入正題上程式碼
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100
typedef struct
{
char str[MAXSIZE];//str陣列用來存放字串中的每個字元,MAXSIZE表示陣列str所能存放的最大陣列長度
int length;//表示字串當前的長度
}seqstring;
//函式strcompare()的功能: 當S1>S2時返回! ,當S1=S2時返回0,當S1<S2 時返回-1;
int strcompare(seqstring s1,seqstring s2)
{
int i,m = 0,len;
len = s1.length < s2.length ? s1.length : s2.length;
for(i = 0; i <= len;i ++)
if(s1.str[i]>s2.str[i])
{
m = 1;
break;
}
else if (s1.str[i] < s2.str[i])
{
m = -1;
break;
}
return m;
}
int main()
{
seqstring s1,s2;
int i, m;
printf("input char to s1:\n");
gets(s1,str);
s1.length = strlen(s1,str);
printf("input char to s2:\n");
gets(s2,str);
s2.length = strlen(s2,str);
m = strcompare(s1,s2);
if( m == 1)
printf("s1 > s2\n");
else if( m == -1)
printf("s1 < s2\n");
else if( m == 0)
printf("s1 = s2\n");
return 0;
}