最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

串的定義

零個(gè)或多個(gè)字符組成的有限序列

串的比較 

串的比較實(shí)際上是在比較串中字符的編碼

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

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

除去相等的字符,在第一個(gè)不相等的字符位置以Ascii碼進(jìn)行比較

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

串的順序存儲(chǔ)結(jié)構(gòu)示意圖

串的順序存儲(chǔ)結(jié)構(gòu)是用一組地址連續(xù)的存儲(chǔ)單元來存儲(chǔ)串中的字符序列 

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

串的初始化

相關(guān)定義初始化

/** 狀態(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];  
    //定長方式實(shí)現(xiàn)了字符串的順序結(jié)構(gòu)--缺點(diǎn)是浪費(fèi)空間
    int length;
 
}SString;

串的堆式順序存儲(chǔ)結(jié)構(gòu)(Heap)

/** 串的堆式順序存儲(chǔ)結(jié)構(gòu)(Heap)**/
typedef struct{
    char * ch;  
    //如果是非空串,那么就按照指定長度分配內(nèi)存,否則ch就指向NULL
    int length;   //串當(dāng)前長度
}HString;

初始化堆字符串 

賦值操作

/** 為串str賦值,值為字符串常量chars **/
void StrAssign_HeapString(HString * str,char * chars){
    int len = strlen(chars);
    if(!len) return ERROR;
    InitString_HeapString(str);
    //動(dòng)態(tài)為字符串分配空間
    str->ch = (char*)malloc(len * sizeof(char));
    if(!str->ch){
        exit(OVERFLOW); //內(nèi)存溢出,分配失敗
    }
    //逐個(gè)將字符串輸入所分配的空間中
    for(int i = 0;i < len ; i++)
    {
        str->ch[i] = chars[i];
    }
    str->length = len;  //將長度賦值
    return OK;    
}

比較兩個(gè)堆字符串的大小

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ù),小于則返回負(fù)數(shù)
            return str->ch[i] - str[2]->ch[i];
        }
    }
    //字符都相等但是長度不等,就比較長度
    return str1->length - str2->length;
}

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

相關(guān)文章

  • C++中delete和delete[]的區(qū)別說明

    C++中delete和delete[]的區(qū)別說明

    一直對(duì)C++中的delete和delete[]的區(qū)別不甚了解,今天遇到了,上網(wǎng)查了一下,得出了結(jié)論。希望本文可以對(duì)你有所幫助
    2013-02-02
  • C++類與對(duì)象深入之運(yùn)算符重載與const及初始化列表詳解

    C++類與對(duì)象深入之運(yùn)算符重載與const及初始化列表詳解

    運(yùn)算符是程序中最最常見的操作,例如對(duì)于內(nèi)置類型的賦值我們直接使用=賦值即可,因?yàn)檫@些編譯器已經(jīng)幫我們做好了,但是對(duì)象的賦值呢?能直接賦值嗎
    2022-06-06
  • MoveWindow() SetWindowPos()的區(qū)別于聯(lián)系

    MoveWindow() SetWindowPos()的區(qū)別于聯(lián)系

    這篇文章主要介紹了VC++中MoveWindow() SetWindowPos()的區(qū)別于聯(lián)系,需要的朋友可以參考下
    2015-01-01
  • C語言超全面define預(yù)處理指令的使用說明

    C語言超全面define預(yù)處理指令的使用說明

    C語言里可以用#define定義一個(gè)標(biāo)識(shí)符來表示一個(gè)常量。特點(diǎn)是:定義的標(biāo)識(shí)符不占內(nèi)存,只是一個(gè)臨時(shí)的符號(hào),預(yù)編譯后這個(gè)符號(hào)就不存在了,也不做類型定義。預(yù)編譯又叫預(yù)處理
    2022-04-04
  • C語言之選擇分支語句詳解

    C語言之選擇分支語句詳解

    大家好,本篇文章主要講的是C語言之選擇分支語句詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++實(shí)現(xiàn)LeetCode(65.驗(yàn)證數(shù)字)

    C++實(shí)現(xiàn)LeetCode(65.驗(yàn)證數(shù)字)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(65.驗(yàn)證數(shù)字),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言實(shí)現(xiàn)動(dòng)態(tài)順序表的實(shí)現(xiàn)代碼

    C語言實(shí)現(xiàn)動(dòng)態(tài)順序表的實(shí)現(xiàn)代碼

    這篇文章主要介紹了C語言實(shí)現(xiàn)動(dòng)態(tài)順序表的實(shí)現(xiàn)代碼的相關(guān)資料,動(dòng)態(tài)順序表在內(nèi)存中開辟一塊空間,可以隨我們數(shù)據(jù)數(shù)量的增多來擴(kuò)容,需要的朋友可以參考下
    2017-08-08
  • 詳解C++ 創(chuàng)建文件夾的四種方式

    詳解C++ 創(chuàng)建文件夾的四種方式

    這篇文章主要介紹了C++ 創(chuàng)建文件夾的四種方式,本文示例都是在 E:\database 路徑下創(chuàng)建一個(gè)叫做 testFolder 的文件夾,文章通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-11-11
  • C語言模擬實(shí)現(xiàn)memmove的示例代碼

    C語言模擬實(shí)現(xiàn)memmove的示例代碼

    memmove函數(shù)用于拷貝字節(jié),如果目標(biāo)區(qū)域和源區(qū)域有重疊的話,memmove能夠保證源串在被覆蓋之前將重疊區(qū)域的字節(jié)拷貝到目標(biāo)區(qū)域中,但復(fù)制后源內(nèi)容會(huì)被更改。本文主要介紹了C語言模擬實(shí)現(xiàn)memmove的示例代碼,需要的可以參考一下
    2022-12-12
  • C++中std::vector的6種初始化方式

    C++中std::vector的6種初始化方式

    這篇文章主要介紹了C++中std::vector的6種初始化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論

黄浦区| 乌兰县| 贵定县| 读书| 南充市| 丹凤县| 黎平县| 白水县| 虎林市| 天镇县| 涟源市| 巴东县| 鸡东县| 图木舒克市| 留坝县| 苏州市| 天镇县| 孟州市| 唐河县| 陈巴尔虎旗| 牡丹江市| 永年县| 满城县| 辽阳市| 交城县| 涟源市| 齐河县| 太保市| 北京市| 莆田市| 广州市| 信宜市| 惠来县| 灌云县| 交口县| 伊吾县| 龙门县| 武乡县| 阳山县| 墨竹工卡县| 桃园市|