0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鏈?zhǔn)酱鎯?chǔ)字符串的簡(jiǎn)單實(shí)現(xiàn)

冬至子 ? 來源:計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室 ? 作者:好壞生長(zhǎng) ? 2023-01-18 10:51 ? 次閱讀

除了順序串,還有鏈串,所謂鏈串,就是鏈?zhǔn)酱鎯?chǔ)的字符串。

2.jpg

下面是鏈串的簡(jiǎn)單實(shí)現(xiàn)

// 鏈串


#include 
#include 


typedef struct snode 
{   char data;
    struct snode *next;
} LinkStrNode;


//生成串
void StrAssign(LinkStrNode *s,char cstr[])
{  int i;
   LinkStrNode *r,*p;
   s=(LinkStrNode *)malloc(sizeof(LinkStrNode));
   r=s;          //r始終指向尾結(jié)點(diǎn)
   for (i=0;cstr[i]!='\\0';i++) 
   {  p=(LinkStrNode *)malloc(sizeof(LinkStrNode));
      p->data=cstr[i];
      r->next=p; r=p;
   }
   r->next=NULL;      //尾結(jié)點(diǎn)next域置為空
}


void DestroyStr(LinkStrNode *s)
{  LinkStrNode *pre=s,*p=s->next;  //pre指向結(jié)點(diǎn)p的前驅(qū)結(jié)點(diǎn)
   while (p!=NULL)      //掃描鏈串s
   {  free(pre);      //釋放pre結(jié)點(diǎn)
      pre=p;        //pre、p同步后移一個(gè)結(jié)點(diǎn)
      p=pre->next;
   }
   free(pre);
}


LinkStrNode *Concat(LinkStrNode *s,LinkStrNode *t)
{  LinkStrNode *str,*p=s->next,*q,*r;
   str=(LinkStrNode *)malloc(sizeof(LinkStrNode));
   r=str;      //r指向結(jié)果串的尾結(jié)點(diǎn)
   while (p!=NULL)    //用p掃描s的所有數(shù)據(jù)結(jié)點(diǎn)
   {  q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
      q->data=p->data;  //將p結(jié)點(diǎn)復(fù)制到q結(jié)點(diǎn)中
      r->next=q;r=q;    //將q結(jié)點(diǎn)鏈接到str的末尾
      p=p->next;
   }
   p=t->next;
   while (p!=NULL)    //用p掃描t的所有數(shù)據(jù)結(jié)點(diǎn)
   {  q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
      q->data=p->data;  //將p結(jié)點(diǎn)復(fù)制到q結(jié)點(diǎn)中
      r->next=q;r=q;    //將q結(jié)點(diǎn)鏈接到str的末尾
      p=p->next;
   }
   r->next=NULL;    //尾結(jié)點(diǎn)的next域置為空
   return str;
}


// 查詢子串
void Repl(LinkStrNode *s)
{ 
   LinkStrNode *p=s->next, *q;
   int find=0;
   while (p->next!=NULL && find==0)          //查找ab子串
   { 
       if (p->data=='a' && p->next->data=='b')
       {  p->data='x'; p->next->data='z';
          q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
          q->data='y';  q->next=p->next;  p->next=q;
          find=1;
       }


       else p=p->next; 
    }
}


// 查詢子串
int index(SqString s,SqString t)
{  int i,j,k;
   for (i=0;i<=s.length-t.length;i++) 
   {  for (k=i,j=0; k

上述代碼是對(duì)偽代碼的簡(jiǎn)單實(shí)現(xiàn),沒有語法錯(cuò)誤,可作為參考用例。

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)存儲(chǔ)

    關(guān)注

    5

    文章

    951

    瀏覽量

    50811
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    567

    瀏覽量

    20441
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    字符串的表示

    字符串的表示  隨著計(jì)算機(jī)在文字處理與信息管理中的廣泛應(yīng)用, 字符串已成為最常用的數(shù)據(jù)類型之一, 許多計(jì)算機(jī)中都提供字符串操作功能, 一些計(jì)算機(jī)還給出讀寫字
    發(fā)表于 10-13 17:11 ?3042次閱讀
    <b class='flag-5'>字符串</b>的表示

    C語言字符串轉(zhuǎn)數(shù)字實(shí)現(xiàn)方法

    在C/C++語言中沒有專門的字符串變量,通常用字符數(shù)組來存放字符串字符串是以“\0”作為結(jié)束符。C/C++提供了豐富的字符串處理函數(shù),下面
    發(fā)表于 11-14 17:50 ?1.3w次閱讀

    字符串移位包含的問題解決方案

    問題:給定字符串s和t,判斷是否字符串t能通過將s移位后的字符串所包含。 方法一 最簡(jiǎn)單的方法就是將s進(jìn)行循環(huán)移位,再判斷移位后的字符串是否
    發(fā)表于 11-29 10:05 ?1022次閱讀

    用指針實(shí)現(xiàn)字符串拷貝的程序和字符型指針變量與字符數(shù)組的區(qū)別說明

    字符串是存放在字符數(shù)組中的,對(duì)字符數(shù)組中的字符逐個(gè)處理時(shí),前面介紹的指針與數(shù)組之間的關(guān)系完全適用于字符數(shù)組。通常將
    發(fā)表于 11-05 16:15 ?2次下載
    用指針<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>字符串</b>拷貝的程序和<b class='flag-5'>字符</b>型指針變量與<b class='flag-5'>字符</b>數(shù)組的區(qū)別說明

    什么是復(fù)制字符串?Python如何復(fù)制字符串

    連續(xù)幾篇文章都在寫 Python 字符串,這出乎我的意料了。但是,有的問題,不寫不行,特別是那種靈機(jī)一動(dòng)想到的問題,最后你發(fā)現(xiàn),很多人根本不懂卻又誤以為自己懂了。那就繼續(xù)刨根問底,探究個(gè)明白吧
    發(fā)表于 11-25 10:32 ?2960次閱讀

    strtok拆分字符串

    大家好,我是驚覺,今天聊聊字符串字符串的使用場(chǎng)景非常之多,人機(jī)交互和雙機(jī)通信都會(huì)用到。比如:通過串口向單片機(jī)發(fā)送指令,以執(zhí)行操作或配置參數(shù)。單片機(jī)讀取傳感器數(shù)據(jù),數(shù)據(jù)格式是字符串。一般GPS數(shù)據(jù)
    發(fā)表于 01-13 15:46 ?8次下載
    strtok拆分<b class='flag-5'>字符串</b>

    字符串函數(shù)重寫練習(xí)

    字符串函數(shù)重寫練習(xí):字符串比較、字符串拼接、字符串查找、字符串拷貝、內(nèi)存比較、內(nèi)存拷貝、內(nèi)存初始化、內(nèi)存比較、二維數(shù)組定義及基本使用、位運(yùn)算
    的頭像 發(fā)表于 05-05 15:02 ?1926次閱讀

    字符串操作

    labview字符串操作
    發(fā)表于 06-28 15:09 ?2次下載

    C語言總結(jié)_字符串全方位練習(xí)

    C語言字符串全方位練習(xí),涉及知識(shí)點(diǎn):字符串解析、大小寫判斷、字符串插入、字符串刪除、字符串排序、字符串
    的頭像 發(fā)表于 08-14 09:41 ?1408次閱讀

    一文詳解JavaScript字符串

    JavaScript字符串是原始值。此外,字符串是不可變的。這意味著如果你修改一個(gè)字符串,你總是會(huì)得到一個(gè)新的字符串。原始字符串不會(huì)被改變。
    的頭像 發(fā)表于 12-08 16:36 ?1124次閱讀

    python字符串有哪些特定方法

    python字符串序列操作也適用于列表和元組。 python字符串還有獨(dú)有方法,即字符串對(duì)象的函數(shù),其他對(duì)象不可調(diào)用,只有字符串對(duì)象可調(diào)用。
    的頭像 發(fā)表于 02-23 15:02 ?631次閱讀

    C語言字符串的引用方式

    在C語言程序中,字符串是存放在字符數(shù)組中的。 2. 用字符數(shù)組存放一個(gè)字符串,可以通過數(shù)組名和下標(biāo)引用字符串中的一個(gè)
    的頭像 發(fā)表于 03-10 14:57 ?1789次閱讀

    字符串的相關(guān)知識(shí)

    TCL 中的數(shù)據(jù)類型只有一種:字符串。這些字符串可以是字母、數(shù)字、布爾值、標(biāo)點(diǎn)符號(hào)等特殊字符的組合。在某些特殊命令的作用下,字符串可以向其他數(shù)據(jù)類型轉(zhuǎn)換。下面將系統(tǒng)的講解或回顧下
    的頭像 發(fā)表于 03-29 11:41 ?1038次閱讀

    mysql字符串包含某個(gè)字符串

    將詳盡、詳實(shí)、細(xì)致地探討MySQL中字符串包含的實(shí)現(xiàn)方法。 在MySQL中,可以通過使用內(nèi)建函數(shù)和通配符來實(shí)現(xiàn)字符串包含的操作。下面將詳細(xì)介紹幾種常用的方法: 使用LIKE通配符: L
    的頭像 發(fā)表于 11-16 14:52 ?3370次閱讀

    labview字符串如何轉(zhuǎn)換為16進(jìn)制字符串

    在LabVIEW中,將字符串轉(zhuǎn)換為16進(jìn)制字符串是一個(gè)常見的需求,尤其是在處理數(shù)據(jù)通信和硬件接口時(shí)。LabVIEW提供了多種方法來實(shí)現(xiàn)這一轉(zhuǎn)換,包括使用內(nèi)置函數(shù)、編寫VI(Virtual
    的頭像 發(fā)表于 09-04 15:54 ?1133次閱讀