一、 串和线性表很相似,操作也基本相同 区别 ①串的元素全为字符 ② 线性表的操作基本是单个元素;串的基本操作是“串的整体” ps:串加单引号 data=‘data’,第一个是标识符,第二个是串 若串仅仅作为输入输出的常量,则仅需要储存字符序列;大多数非数值计算中,串也以变量形式存在
二、串的储存 1.顺序映象 ①定长顺序储存 用地址连续的内存单元依次存放字符序列 用数组
#define MAZSTRLEN 255
typedef unsigned char Sstring[MAXSTRLEN+1];
//0单元存放串的长度(某些高级语言中);C语言中串的长度是隐含的,用某个特定字符表示的
ps:当串的实际长度超过定义的最大长度,则超过部分被舍去,称为“截断” (所以注意连接contact时候分情况)
②堆分配储存 存储空间中只有串的起始地址和串长; 使用mallco()和free()函数动态管理,为新产生的串分配存储区,称这种串值共享的存储空间为“堆”; C语言中常以一个空字符为结束标志,串长为隐含值
typedef struct{
char *ch;
int length;
}HString;
2.块链储存 由于存储密度问题,一个结点最好存储不只一个字符,比如一个结点可以存一行;用链储存操作方便,可以直接删除一行,还不移动其他行的数据
#define CHUNKSIZE 80//可由客户定义的块大小
typedef struct Chunk{
char ch[CUNKSIZE];//数据域
struct Chunk*next;//指针域
}Chunk;//结点
typedef struct{
Chunk *head,*tail;
int curlen;
}L_String;//串的链表结构
三、C语言中串的基本操作(其它串操作都由基本操作构成) 1.gets(str) 2.puts(str) 3.stract(str1,str2)连接 4.strcpy(str1,str2)把串2赋值给串1 5.strcmp(str1,str2)比较 6.strlen(str) 7.strlwr(str)全部转换为小写字母 8.strupr(str)全部转换为大写字母
四、串的操作 1.StrAssign(&T,chars) 把串的常量(字符串)赋值给串的变量T 2.StrCopy(&T,S) 将串S赋值给串T 3.StrLength(S) 求串的长度(元素个数) 4.StrEmpty(S) 如果S是空串,返回TRUE;否则返回FALSE 5.StrCompare(S,T) 一位一位比较大小(如a>b),以第一次比较出来的结果为准 S>T,返回值>0;=、0){ n=StrLength(S);,=StrLength(T); i=pos; while(i
- 2022大三计算机 | 保研面试 | 专业课(数据结构、计组等) 数学(离散等) | 资料整理
- 2022大三计算机 | 保研机试 | 学习路线
- Linux中sudo ./xxx.sh找不到命令的真正原因——文件执行权限
- Dapp区块链 | wireshark抓包2
- 区块链报错7 | invalid address | Error: [ethjs-query] while formatting outputs from RPC: “message“
- 区块链报错6 | Failed to load resource: the server responded with a status of 404 (Not Found)
- 区块链报错 5 | Contract has not been deployed to detect network (network/artifact mismatch)
- 区块链报错1 | npm run dev 无法解析json格式 | npm ERR JSON.parse Failed to parse json
- 区块链报错3 | truffle unbox 报错 | downloading失败 | unbox failed
- 区块链知识(一) | 实例化合约Contract