数据结构(四)串的动态数组存储
生活随笔
收集整理的這篇文章主要介紹了
数据结构(四)串的动态数组存储
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include <stdio.h>
#include <stdlib.h>#define MAXLEN 255
//定長(zhǎng)順序存儲(chǔ)
typedef struct
{char* ch; //每個(gè)分量存儲(chǔ)一個(gè)字符int length; //串的實(shí)際長(zhǎng)度
}SString;//串的初始化
bool StrAssign(SString& T, char* chars)
{int i = 0, len;T.ch = (char*)malloc(MAXLEN);char* p;for (len = 0, p = chars; *p != '\0'; p++, len++);//求出chars長(zhǎng)度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;}//復(fù)制
bool StrCopy(SString& T, char* s)
{int i = 0, len;char* p;for (len = 0, p = s; *p != '\0'; p++, len++);//求出chars長(zhǎng)度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;
}//兩數(shù)比較
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;}//求串長(zhǎng)
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;q.ch= (char*)malloc(MAXLEN);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 big\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;
}
總結(jié)
以上是生活随笔為你收集整理的数据结构(四)串的动态数组存储的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 成都欢乐谷运营时间
- 下一篇: c语言深入浅出(一)strcpy和mem