链式存储字符串的简单实现

电子说

1.3w人已加入

描述

除了顺序串,还有链串,所谓链串,就是链式存储的字符串。

数据存储

下面是链串的简单实现

// 链串


#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始终指向尾结点
   for (i=0;cstr[i]!='\\0';i++) 
   {  p=(LinkStrNode *)malloc(sizeof(LinkStrNode));
      p->data=cstr[i];
      r->next=p; r=p;
   }
   r->next=NULL;      //尾结点next域置为空
}


void DestroyStr(LinkStrNode *s)
{  LinkStrNode *pre=s,*p=s->next;  //pre指向结点p的前驱结点
   while (p!=NULL)      //扫描链串s
   {  free(pre);      //释放pre结点
      pre=p;        //pre、p同步后移一个结点
      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指向结果串的尾结点
   while (p!=NULL)    //用p扫描s的所有数据结点
   {  q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
      q->data=p->data;  //将p结点复制到q结点中
      r->next=q;r=q;    //将q结点链接到str的末尾
      p=p->next;
   }
   p=t->next;
   while (p!=NULL)    //用p扫描t的所有数据结点
   {  q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
      q->data=p->data;  //将p结点复制到q结点中
      r->next=q;r=q;    //将q结点链接到str的末尾
      p=p->next;
   }
   r->next=NULL;    //尾结点的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

上述代码是对伪代码的简单实现,没有语法错误,可作为参考用例。

审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分