iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言数据结构与算法之字符串详解
  • 775
分享到

C语言数据结构与算法之字符串详解

2024-04-02 19:04:59 775人浏览 泡泡鱼
摘要

目录串的定义串的比较 串的抽象数据类型串的初始化相关定义初始化定长类初始化串的堆式顺序存储结构(Heap)初始化堆字符串 赋值操作比较两个堆字符串的大小 串的定义

串的定义

零个或多个字符组成的有限序列

串的比较 

串的比较实际上是在比较串中字符的编码

存在某个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 FALSE 0
#define EQ 0
#define GT 1  //大于
#define LT -1 //小于

定长类初始化

#define MAX_SIZE 1024
typedef struct{
    char ch[MAX_SIZE + 1];  
    //定长方式实现了字符串的顺序结构--缺点是浪费空间
    int length;
 
}SString;

串的堆式顺序存储结构(Heap)


typedef struct{
    char * ch;  
    //如果是非空串,那么就按照指定长度分配内存,否则ch就指向NULL
    int length;   //串当前长度
}HString;

初始化堆字符串 

赋值操作


void StrAssign_HeapString(HString * str,char * chars){
    int 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 ; i++)
    {
        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 < str2->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语言 字符串内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言数据结构与算法之字符串详解

本文链接: https://www.lsjlt.com/news/162000.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言数据结构与算法之字符串详解
    目录串的定义串的比较 串的抽象数据类型串的初始化相关定义初始化定长类初始化串的堆式顺序存储结构(Heap)初始化堆字符串 赋值操作比较两个堆字符串的大小 串的定义...
    99+
    2024-04-02
  • C语言数据结构之队列算法详解
    目录一、前言二、基本概念三、顺序队列四、链队列五、循环队列六、总结与提高一、前言 队列在程序设计中经常出现,如:操作系统中的排队问题。 这篇文章主要介绍了队列的...
    99+
    2024-04-02
  • C语言字符串压缩之ZSTD算法详解
    目录前言一、zstd压缩与解压二、ZSTD压缩与解压性能探索三、zstd的高级用法四、总结前言 最近项目上有大量的字符串数据需要存储到内存,并且需要储存至一定时间,于是自然而然的想到...
    99+
    2022-11-13
    C语言字符串压缩 C语言 ZSTD算法 C语言 ZSTD 字符串压缩
  • C语言数据结构与算法之队列的实现详解
    目录队列的概念及结构队列的实现Queue.hQueue.cTest.c队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FI...
    99+
    2022-11-13
    C语言数据结构 队列 C语言 队列实现 C语言 队列
  • c语言中字符串与字符串数组详解
    目录字符串字符串输出输入字符串字符串常用方法字符串数组总结字符串 用双引号引起来的就是字符串,字符串由字符组成 字符串使用%s格式化输出 字符串以\0结尾,...
    99+
    2024-04-02
  • C语言数据结构与算法之单链表
    目录基本概念读取数据元素获取第i个结点的数据元素插入数据元素 初始化链表打印链表顺序表查空顺序表的删除 删除第i个结点及其数据元素情况1:当删除的是第一个元素情况2:除第一个结点外完...
    99+
    2024-04-02
  • C语言数据结构与算法之链表(二)
    目录引入模拟链表介绍插入代码实现代码实现  引入 在上一节的学习中我们介绍了C语言如何实现链表,但是,在这一章,我们将抛开令人头秃的指针和结构体,我们将另外使用一种数组来实现的方式,...
    99+
    2024-04-02
  • C语言数据结构与算法之链表(一)
    目录引言链表的相关思考链表结点结构建立链表实现插入操作完整代码引言 在存储一大波数的时候,我们通常使用的是数组,但是数组有时候又会显得不够灵活,比如下面这个例子: 有一串已经排序好的...
    99+
    2024-04-02
  • C语言数据结构与算法之排序总结(一)
    目录一、前言二、基本概念1.排序2.排序方法的稳定性3.内部和外部排序三、插入类排序1.直接插入排序2.折半插入排序3.希尔排序四、交换类排序1.冒泡排序2.快速排序五、总结比较一、...
    99+
    2024-04-02
  • C语言数据结构与算法之排序总结(二)
    目录一、前言二、选择类排序1.简单选择排序2.树形选择排序3.堆选择排序三、归并排序四、分配类排序1.多关键字排序2.链式基数排序五、总结归纳一、前言 之前的排序总结(一)对插入类和...
    99+
    2024-04-02
  • C语言字符函数与字符串函数详解
    目录本章重点前言1.strlen函数注意点1注意点22.strcpy注意点1:注意点2:注意点3:注意点4:总结本章重点 重点介绍处理字符和字符串的库函数的使用和注意事项 1.求字符...
    99+
    2024-04-02
  • 详解C语言数据结构之栈
    目录栈的链式实现主要内容代码实现:总结栈的链式实现 主要内容 (1) 栈包含7个元素,依次是67,3,88,6,1,7,0,采用尾插入法创建 栈,为该栈设置两个指针,一个bottom...
    99+
    2024-04-02
  • C语言数据结构与算法之图的遍历(二)
    目录前言 广度优先搜索过程主要思想 代码实现  前言  在上一章的内容中我们使用了深度优先搜索来进行遍历,这一章我们选择使用广度优先搜索来完成这个图的遍历 --> 结果如下:...
    99+
    2024-04-02
  • C语言数据结构与算法之图的遍历(一)
    目录引入 深度优先搜索代码实现 完整代码  引入  在数据结构中常见的有深度优先搜索和广度优先搜索。为什么叫深度和广度呢?其实是针对图的遍历而言的,请看下面这个图: 图是由一些小圆...
    99+
    2024-04-02
  • C语言字符串数组详解
    C语言字符串数组 字符串是连续的字符序列,最后以空字符'\0'作为终止符。一个字符串的长度指所有字符的数量,但不包括终止符。在 C 语言中,没有字符串类型,自然也就没有运算符以字符串...
    99+
    2024-04-02
  • C语言数据结构之二分法查找详解
    问题:在有序数组中查找给定元素的下标goal。 在查找一个数组元素的下标,可以用循环来解决,但是如果一个数足够大,比如说手机的价格,用循环来查找,就相当于叫一个人猜,从0开始,需要猜...
    99+
    2024-04-02
  • JavaScript数据结构与算法之栈详解
    目录1.认识栈2.面向过程方法源码编写栈2.1思考2.2需要实现的方法2.3源码实现,并调用类3.用面向对象的方法来源码书写3.1思考3.2需要实现的方法3.3源码及使用类4.总结1...
    99+
    2024-04-02
  • C语言字符串替换:字符,字符串,字符数组详解
    在C语言中,字符串是由字符数组表示的。一个字符串是一个以null字符('\0')结尾的字符数组。字符替换:要替换字符串中的某个字符,...
    99+
    2023-08-15
    C语言
  • 重学Go语言之运算符与控制结构详解
    目录运算符算术运算符关系运算符逻辑运算符位运算符赋值运算符指针运算符运算符的优先级控制结构IfForSwitch小结运算符 运算符的作用是将操作数组合成表达式,比如下面的代码中,我们...
    99+
    2023-02-28
    Go语言 运算符 控制结构 Go语言 运算符 Go语言 控制结构 Go 运算符 Go 控制结构
  • C语言字符串替换:字符,字符串,字符数组详解
    目录案例描述案例分析必备知识1,字符数组(1)字符数组的定义(2)字符数组的初始化2,字符串概念(1)字符串的概念(2)用字符初始化字符数组(3)获取字符串的长度3,字符串与指针4,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作