1. 程式人生 > >試編寫一個函式,實現在順序儲存方式下字串的strcompare(S1,S2)運算

試編寫一個函式,實現在順序儲存方式下字串的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;


}