IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【数据结构与算法】—— * 字符串 * -> 正文阅读

[数据结构与算法]【数据结构与算法】—— * 字符串 *

目录

🌈🌈串的定义

🐳🐳串的比较?🐳🐳

😎😎串的抽象数据类型?😎😎

??串的顺序存储结构示意图???

🐾🐾串的初始化🐾🐾

相关定义初始化

·定长类初始化

·串的堆式顺序存储结构(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)

/** 串的堆式顺序存储结构(Heap)**/
typedef struct{
    char * ch;  
    //如果是非空串,那么就按照指定长度分配内存,否则ch就指向NULL
    int length;   //串当前长度
}HString;

?

?🎈🎈初始化堆字符串?🎈🎈

?? 赋值操作??

/** 为串str赋值,值为字符串常量chars **/
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;
}

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-12 00:15:37  更:2022-01-12 00:17:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:30:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码