王道数据结构实践代码----字符串的静态顺序存储实现(C语言版)
前言
日期:2021年11月20日
书籍:王道2021年数据结构考研复习指导
代码内容:字符串的静态顺序存储实现
分段代码展示
预处理部分
#include <stdio.h>
#include <stdlib.h>
#define bool char
#define true 1
#define false 0
#define MAXLEN 255 //预定义最大串长为255
【0】定义数据结构和其初始化函数
//【0】定义数据结构和其初始化函数
//[1]顺序存储字符串的数据结构
typedef struct SString
{
char ch[MAXLEN + 1]; /*char类型的数组,数组的每个分类存储一个字符*/
char length; /*串的实际长度*/
}SString;
//[2]顺序存储字符串的初始化
/**
* @brief 顺序存储字符串的初始化
* @param str 类型:SString*,要进行初始化的字符串
* @return 成功返回ture,否则返回false
*/
bool StrInit(SString* Str)
{
Str->length = 0;
return true;
}
【1】顺序存储字符串的求串长、清空、判空操作
/**
* @brief 顺序存储字符串的求串长
* @param Str 类型:SString,目标字符串
* @return 返回一个int类型的值(即目标字符串的长度)
*/
int StrLength(SString Str)
{
return Str.length;
}
/**
* @brief 顺序存储字符串的清空操作
* @param Str 类型:SString*,目标字符串的指针
* @return 成功返回ture,否则返回false
*/
bool StrClear(SString* Str)
{
Str->length = 0;
return true;
}
/**
* @brief 顺序存储字符串的判空操作
* @param Str 类型:SString,目标字符串
* @return 串空返回ture,否则返回false
*/
bool StrEmpty(SString Str)
{
return !Str.length;
}
【2】顺序存储字符串的赋值操作和输出操作
//[1]顺序存储字符串的赋值操作
/**
* @brief 顺序存储字符串的赋值操作,把串src赋值为Dest
* @param Dest 类型:SString*,指向用于存储赋值内容的目标字符串的首地址
* @param *Src 类型:char,字符串Dest的数组要被赋值的内容
* @return 赋值成功,返回true,同时Dest被赋给正确的值;否则返回false并报错
*/
bool StrAssign(SString* Dest,char *Src)
{
if(!Src)
{
printf("StrAssign:Src is NULL!\n");
return false;
}
int i = 1;
for(i = 1;Src[i - 1] != '\0';i++)
{
if(i <= MAXLEN)
{
Dest->ch[i] = Src[i - 1];
}
else
{
break;
}
}
Dest->length = i - 1;
return true;
}
//[2]顺序存储字符串的输出操作
/**
* @brief 顺序存储字符串的输出操作
* @param Str 类型:SString,目标字符串
* @return 输出字符串的值和串长
*/
bool StrPrint(SString Str)
{
if(StrEmpty(Str))
{
printf("StrPrint:The SString is an empty sstring or an error sstring\n");
return false;
}
for(int i = 1;i <= Str.length;i++)
{
printf("%c",Str.ch[i]);
}
printf("\nLength = %d\n\n",StrLength(Str));
return true;
}
【3】顺序存储字符串的复制操作
/**
* @brief 顺序存储字符串的复制操作,由串Src复制得到串Dest
* @param Dest 类型:SString*,用于存储要复制的字符串
* @param Src 类型:SString*,用于存储被复制的字符串
* @return 复制成功,函数返回true,同时Dest的值变成Src的值,否则函数返回fales
*/
bool StrCopy(SString* Dest,SString