数据结构--串的存储结构

news/2024/10/29 2:34:55/

数据结构–串的存储结构

串的顺序存储

静态数组实现(定长顺序存储)

#define MAXLEN 255
typedef struct
{char ch[MAXLEN];int length;
}SString;

动态数组实现(堆分配存储)

typedef struct
{char* ch;int length;
}HString;int main()
{HString S;S.ch = (char*)malloc(sizeof(char) * MAXLEN);return 0;
}

方案一:

方案二:

优点 : 字符的位序和数组下标相同 \color{purple}优点:字符的位序和数组下标相同 优点:字符的位序和数组下标相同

方案三:

没有 L e n g t h 变量 , 以字 符 ′ \ 0 ′ 表示结尾 ( 对应 A S C I I 码的 \ 0 ) \color{purple}没有Length变量,以字符'\backslash0'表示结尾(对应ASCII码的\backslash0) 没有Length变量,以字\0表示结尾(对应ASCII码的\0)

方案四:

串的链式存储

typedef struct StringNode
{char ch;struct StringNode* next;
}StringNode, *String;
typedef struct StringNode
{char ch[4]; //每个结点存多个字符struct StringNode* next;
}StringNode, *String;

基本操作的实现

#define MAXLEN 255
typedef struct 
{char ch[MAXLEN];int length;
}SString;

StrAssign(&T,chars):赋值操作。把串T赋值为chars。StrCopy(&T,S):复制操作。由串s复制得到串干。
StrEmpty(S):判空操作。若s为空串,则返回TRUE,否则返回FALSE。StrLength(S):求串长。返回串s的元素个数。
ClearString(&S):清空操作。将s清为空串。
DestroyString(&S):销毁串。将串s销毁(回收存储空间)。Concat(&T,S1,S2):串联接。用T返回由S1和S2联接而成的新串

S u b S t r i n g ( & S u b , S , p o s , l e n ) \color{red}SubString(\&Sub,S,pos,len) SubString(&Sub,S,pos,len):求子串。用Sub返回串S的第pos个字符起长度为len的子串。

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;
}

S t r C o m p a r e ( S , T ) \color{red}StrCompare(S,T) StrCompare(S,T):比较操作。若S>T,则返回值>0;若S=T,则返回值=0;若S<T,则返回值<0。

int StrCompare(SString S, SString T)
{for (int 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;
}

I n d e x ( S , T ) \color{red}Index(S,T) Index(S,T):定位操作。若主串S中存在与串T值相同的子串,则返回它在主串S中第一次出现的位置;否则函数值为0。

int Index(SString S, SString T)
{int i = 1, n = S.length, m = T.length;SString sub;while (i <= n - m + 1){SubString(sub, S, i, m);if (StrCompare(sub, T) != 0)    i++;else    return i;}return 0;
}

知识回顾与重要考点


http://www.ppmy.cn/news/742788.html

相关文章

影响wifi信号强度因素

影响WIFI信号强度因素&#xff1a; 1、室内错综复杂的环境&#xff0c;会在一定程度上导致WIFI无线信号产生多径传播现象&#xff0c;从而导致信号强度的不稳定性&#xff1b; 2、室内的人员密集程度和人员流动情况也会对WIFI信号强度产生影响&#xff1b; 3、室内电子产品产生…

Android wifi 信号强度单位 dbm

当利用android wifi模块获取wifi信号强度值时我们通常会得到-20~-80之间的值&#xff0c;单位是dBm。如&#xff1a;-67dBm。 那么什么是dBm呢&#xff1f; dBm 是表示功率绝对值大小的值&#xff0c;是以1mW功率为基准的一个比值。计算公式为&#xff1a;dBm10log&#xff0…

获取wifi当前手机连接的wifi信息以及信号强度

修改时间&#xff1a;2022/9/5 案例中是主动向安卓系统获取wifi信号强度&#xff0c;正常情况下是通过监听广播的方式来被动获取&#xff0c;看自己三年前写的代码还是挺好笑的&#xff0c;看到好多问题&#xff0c;再不改就误人子弟了&#xff0c;所以改了改。 给权限 <u…

wifi信号强度等级算法

源于android 源码 /frameworks/base/wifi/java/android/net/wifi/WifiManager.java ... /** Anything worse than or equal to this will show 0 bars. */private static final int MIN_RSSI -100;/** Anything better than or equal to this will show the max bars. */pri…

【转】如何检测wifi信号强度? -- 不错

原文网址&#xff1a;http://jingyan.baidu.com/article/90895e0fe9616164ec6b0b88.html 当我们在使用wifi上网时&#xff0c;在某些角落会出现无wifi信号&#xff0c;或是时有时无的状态。 今天我们就来用一款软件来帮助您测试wifi信号强度。 工具/原料 笔记本 WirelessMon.ex…

android 获取wifi和移动网络信号强度

1. 获取wifi信号强度 可以直接监听广播 MyReceiver receiver new RssiReceiver(); IntentFilter intentFilter new IntentFilter(WifiManager.RSSI_CHANGED_ACTION); registerReceiver(receiver,intentFilter);class MyReceiver extends BroadcastReceiver {Overridepublic…

Android获取WIFI信号强度

1. 利用Android下的WifiManager获取可见的SSID WifiManager wifiMg (WifiManager)act.getSystemService(act.WIFI_SERVICE);List<ScanResult> list wifiMg.getScanResults(); 然后对ScanResult里的每个值进行枚举&#xff0c;ScanResult里的是一个level&#xff0c;需要…

Android 12.0 修改wifi信号强度

1.前言 在12.0的系统rom产品定制化开发中,在进行产品开发中,对应系统定制会有各种各样的需求,对纯wifi产品而言,对于wifi要求也是越来越高,因此有客户要求对wifi信号强度做定制,修改信号强度来增强显示wifi信号,所以要对wifi显示信号强度的相关代码做修改 2.修改wifi…