零个或多个字符组成的有限序列
串的比较实际上是在比较串中字符的编码
存在某个k < min(n,m),使得ai = bi (i = 1,2,3,4..k)
如果 ak < bk –> 那么srt1 < srt2 (反之也成立)
除去相等的字符,在第一个不相等的字符位置以ascii码进行比较
串的顺序存储结构示意图
串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列
typedef struct sqstring{ char* ch; //若串为空,则按串长分配存储区 //否则ch = null int length;//串长}sqstring;
/** 状态码 **/#define true 1#define fal 0#define eq 0#define gt 1 //大于#define lt -1 //小于
#define max_size 1024typedef struct{ char长春调查 ch[max_size + 1]; //定长方式实现了字符串的顺序结构--缺点是浪费空间 int length; }sstring;
/** 串的堆式顺序存储结构(heap)**/typedef struct{ char * ch; //如果是非空串,那么就按照指定长度分配内存,否则ch就指向null int length; //串当前长度}hstring;
/** 为串str赋值,值为字符串常量chars **/void strassign_heapstring(hstring * str,char * chars){ in不是而是造句t len = strlen(chars); if(!len) return error; initstring_heapstring(str); //动态为字符串分配空间 str->ch = (char*)malloc(len * sizeof(char)); if(!str->ch){ exit(overflow); //内存溢出,分配失败 } //逐个将字符串输入所分配的空间中 for(int i = 0;i < len ; ishakeitoff++) { str->ch[i] = chars[i]; } str->length = len; //将长度赋值 return ok; }
str1 == str2 返回0 ; str1 < str2 返回-1 ; str1 > str2 返回1
status strcmp_heapstring(hstring * str1,hstring * str2){ for(int i = 0;i < str->length && i < strwds状态2->length; i ++){ //遇到不同的字符就直接比较ascii if(str->ch[i] != str[2]->ch[i]){ //大于则返回整数,小于则返回负数 return str->ch[i] - str[2]->ch[i]; } } //字符都相等但是长度不等,就比较长度 return str1->length - str2->length;}
到此这篇关于c语言 数据结构与算法之字符串详解的文章就介绍到这了,更多相关c语言 字符串内容请搜索www.887551.com以前的文章或继续浏览下电视背景墙壁画面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 13:24:47,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/8ef76ac119c6200840179632b9d24f5f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C语言 数据结构与算法之字符串详解.doc
本文 PDF 下载地址:C语言 数据结构与算法之字符串详解.pdf
留言与评论(共有 0 条评论) |