欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言 數(shù)據(jù)結構與算法之字符串詳解

 更新時間:2022年01月10日 09:16:54   作者:玄澈_  
這篇文章將帶大家深入了解C語言數(shù)據(jù)結構與算法中的字符串,文中主要是介紹了字符串的定義、字符串的比較以及一些串的抽象數(shù)據(jù)類型,感興趣的可以學習一下

串的定義

零個或多個字符組成的有限序列

串的比較 

串的比較實際上是在比較串中字符的編碼

存在某個k < min(n,m),使得ai = bi (i = 1,2,3,4..k)

如果 ak < bk  -->  那么srt1 < srt2 (反之也成立)

除去相等的字符,在第一個不相等的字符位置以Ascii碼進行比較

串的抽象數(shù)據(jù)類型

串的順序存儲結構示意圖

串的順序存儲結構是用一組地址連續(xù)的存儲單元來存儲串中的字符序列 

typedef struct sqString{
    char* ch;  //若串為空,則按串長分配存儲區(qū)  
               //否則ch = NULL
    int length;//串長
}sqString;

串的初始化

相關定義初始化

/** 狀態(tài)碼  **/
#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];  
    //定長方式實現(xiàn)了字符串的順序結構--缺點是浪費空間
    int length;
 
}SString;

串的堆式順序存儲結構(Heap)

/** 串的堆式順序存儲結構(Heap)**/
typedef struct{
    char * ch;  
    //如果是非空串,那么就按照指定長度分配內(nèi)存,否則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);
    //動態(tài)為字符串分配空間
    str->ch = (char*)malloc(len * sizeof(char));
    if(!str->ch){
        exit(OVERFLOW); //內(nèi)存溢出,分配失敗
    }
    //逐個將字符串輸入所分配的空間中
    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]){
                //大于則返回整數(shù),小于則返回負數(shù)
            return str->ch[i] - str[2]->ch[i];
        }
    }
    //字符都相等但是長度不等,就比較長度
    return str1->length - str2->length;
}

到此這篇關于C語言 數(shù)據(jù)結構與算法之字符串詳解的文章就介紹到這了,更多相關C語言 字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++實現(xiàn)LeetCode(55.跳躍游戲)

    C++實現(xiàn)LeetCode(55.跳躍游戲)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(55.跳躍游戲),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 在c和c++中實現(xiàn)函數(shù)回調(diào)

    在c和c++中實現(xiàn)函數(shù)回調(diào)

    如何在c和c++中實現(xiàn)函數(shù)回調(diào)呢?現(xiàn)在小編就和大家分享一下在c/c++中實現(xiàn)函數(shù)回調(diào)的示例代碼,需要的朋友可以參考下
    2013-07-07
  • C語言算法學習之雙向鏈表詳解

    C語言算法學習之雙向鏈表詳解

    雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數(shù)據(jù)結點中都有兩個指針,分別指向直接后繼和直接前驅(qū)。本文主要介紹了C語言算法中雙向鏈表的實現(xiàn),需要的可以參考一下
    2022-05-05
  • C/C++經(jīng)典楊輝三角問題解決方案

    C/C++經(jīng)典楊輝三角問題解決方案

    楊輝三角形,又稱帕斯卡三角形、賈憲三角形、海亞姆三角形,它的排列形如三角形。本文將為大家介紹通過C++/C語言實現(xiàn)打印楊輝三角形的示例代碼,需要的可以參考一下
    2023-02-02
  • C語言實現(xiàn)簡單推箱子小游戲

    C語言實現(xiàn)簡單推箱子小游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)推箱子小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 一文掌握C++ 智能指針全部用法

    一文掌握C++ 智能指針全部用法

    學習智能指針有很多好處,可以幫我們C++程序員管理動態(tài)分配的內(nèi)存的,它會幫助我們自動釋放new出來的內(nèi)存,從而避免內(nèi)存泄漏,感興趣的朋友跟隨小編一起看看吧
    2021-08-08
  • C語言實現(xiàn)無頭單向鏈表的示例代碼

    C語言實現(xiàn)無頭單向鏈表的示例代碼

    本文主要介紹了C語言實現(xiàn)無頭單向鏈表的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Visual?Studio2022配置ReSharper?C++?常用設置方法

    Visual?Studio2022配置ReSharper?C++?常用設置方法

    這篇文章主要介紹了Visual?Studio2022配置ReSharper?C++?常用設置,本文通過圖文并茂的形式給大家介紹的非常詳細,文中介紹了卸載Resharper的方法及Resharper激活碼,感興趣的朋友參考下吧
    2024-01-01
  • VC文件目錄常見操作實例匯總

    VC文件目錄常見操作實例匯總

    這篇文章主要介紹了VC文件目錄常見操作實例匯總,總結了VC針對文件目錄的各種常用操作,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • QString使用正則操作的接口實現(xiàn)

    QString使用正則操作的接口實現(xiàn)

    這篇文章主要介紹了QString使用正則操作的接口實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12

最新評論