数据结构(四)串的顺序存储
生活随笔
收集整理的這篇文章主要介紹了
数据结构(四)串的顺序存储
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <stdio.h>
#include <stdlib.h>#define MAXLEN 255
//定長順序存儲
typedef struct
{char ch[MAXLEN]; //每個分量存儲一個字符int length; //串的實際長度
}SString;//串的初始化
bool StrAssign(SString& T, char* chars)
{int i = 0, len;char* p;for (len = 0, p = chars; *p != '\0'; p++, len++);//求出chars長度if (len == 0){T.length = 0;return false;}else{for (i = 0; i < len; i++){T.ch[i + 1] = *(chars + i);}T.length = len;}return true;}//復制
bool StrCopy(SString& T, char* s)
{int i = 0, len;char* p;for (len = 0, p = s; *p != '\0'; p++, len++);//求出chars長度if (len == 0){T.length = 0;}else{for (i = 0; i < len; i++){T.ch[i + 1] = *(s + i);}T.length = len;}return true;}//判空
bool StrEmpty(SString& T)
{if (T.length == 0)return true;return false;
}//兩數比較
int StrCompare(SString S, SString T)
{int i;for (i = 1; i <= S.length && i <= T.length; i++){if (S.ch[i] != T.ch[i]){return S.ch[i] - T.ch[i];}}return S.length - T.length;}//求串長
int Strlength(SString S)
{return S.length;}bool Concat(SString &T, SString S, SString S1)
{int i, j;if (S.length + S1.length > MAXLEN){return false;}else{for (i = 0; i < S.length; i++){T.ch[i + 1] = S.ch[i+1];}for (j = 0; j < S1.length; j++){T.ch[i + j + 1] = S1.ch[j+1];}}T.length = S.length + S1.length;return true;}bool SubString(SString& Sub, SString& S, int pos, int len)
{if (pos + len - 1 > S.length){return false;}for (int i = pos; i < pos + len; i++){Sub.ch[i - pos + 1] = S.ch[i];}Sub.length = len;return true;}bool ClearString(SString& S)
{S.length = 0;return true;
}int Index(SString T, SString S)
{int m = Strlength(T);int n = Strlength(S);SString q;int i = 1;while (i <= m - n + 1){SubString(q,T,i,n);if (StrCompare(q, S) == 0){return i;}i++;}return -1;}int main()
{SString T;SString S;SString S1;char s[20] = "chen";char s1[20] = "en";char s2[20] = "hen";StrAssign(T,s);StrAssign(S, s2);StrAssign(S1, s1);//StrCopy(T, s1);//Concat(T,S,S1);//int ret=StrCompare(S, T);//if (ret > 0)//{// printf("s大\n");//}//else if (ret == 0)//{// printf("s與t相等\n");//}//else//{// printf("t大\n");//}int ret=Index(T,S);if (ret > 0){printf("%d\n",ret);}else if (ret == -1){printf("error\n");}for (int i = 0; i < T.length; i++){printf("%c",T.ch[i+1]);}return 0;
}
總結
以上是生活随笔為你收集整理的数据结构(四)串的顺序存储的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么刚刚下载的LOL客服端登不上去,一
- 下一篇: 成都欢乐谷运营时间