0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:计算机科学实验室 作者:好坏生长 2023-01-18 10:51 次阅读

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

2.jpg

下面是链串的简单实现

// 链串


#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

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

审核编辑:刘清

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

    关注

    5

    文章

    963

    浏览量

    50854
  • 字符串
    +关注

    关注

    1

    文章

    577

    浏览量

    20485
收藏 人收藏

    评论

    相关推荐

    字符串的表示

    字符串的表示  随着计算机在文字处理与信息管理中的广泛应用, 字符串已成为最常用的数据类型之一, 许多计算机中都提供字符串操作功能, 一些计算机还给出读写字
    发表于 10-13 17:11 3053次阅读
    <b class='flag-5'>字符串</b>的表示

    C语言字符串转数字实现方法

    在C/C++语言中没有专门的字符串变量,通常用字符数组来存放字符串字符串是以“\0”作为结束符。C/C++提供了丰富的字符串处理函数,下面
    发表于 11-14 17:50 1.3w次阅读

    字符串移位包含的问题解决方案

    问题:给定字符串s和t,判断是否字符串t能通过将s移位后的字符串所包含。 方法一 最简单的方法就是将s进行循环移位,再判断移位后的字符串是否
    发表于 11-29 10:05 1039次阅读

    用指针实现字符串拷贝的程序和字符型指针变量与字符数组的区别说明

    字符串是存放在字符数组中的,对字符数组中的字符逐个处理时,前面介绍的指针与数组之间的关系完全适用于字符数组。通常将
    发表于 11-05 16:15 2次下载
    用指针<b class='flag-5'>实现</b><b class='flag-5'>字符串</b>拷贝的程序和<b class='flag-5'>字符</b>型指针变量与<b class='flag-5'>字符</b>数组的区别说明

    什么是复制字符串?Python如何复制字符串

    连续几篇文章都在写 Python 字符串,这出乎我的意料了。但是,有的问题,不写不行,特别是那种灵机一动想到的问题,最后你发现,很多人根本不懂却又误以为自己懂了。那就继续刨根问底,探究个明白吧
    发表于 11-25 10:32 2988次阅读

    strtok拆分字符串

    大家好,我是惊觉,今天聊聊字符串字符串的使用场景非常之多,人机交互和双机通信都会用到。比如:通过串口向单片机发送指令,以执行操作或配置参数。单片机读取传感器数据,数据格式是字符串。一般GPS数据
    发表于 01-13 15:46 8次下载
    strtok拆分<b class='flag-5'>字符串</b>

    字符串函数重写练习

    字符串函数重写练习:字符串比较、字符串拼接、字符串查找、字符串拷贝、内存比较、内存拷贝、内存初始化、内存比较、二维数组定义及基本使用、位运算
    的头像 发表于 05-05 15:02 1962次阅读

    字符串操作

    labview字符串操作
    发表于 06-28 15:09 2次下载

    C语言总结_字符串全方位练习

    C语言字符串全方位练习,涉及知识点:字符串解析、大小写判断、字符串插入、字符串删除、字符串排序、字符串
    的头像 发表于 08-14 09:41 1448次阅读

    一文详解JavaScript字符串

    JavaScript字符串是原始值。此外,字符串是不可变的。这意味着如果你修改一个字符串,你总是会得到一个新的字符串。原始字符串不会被改变。
    的头像 发表于 12-08 16:36 1159次阅读

    python字符串有哪些特定方法

    python字符串序列操作也适用于列表和元组。 python字符串还有独有方法,即字符串对象的函数,其他对象不可调用,只有字符串对象可调用。
    的头像 发表于 02-23 15:02 671次阅读

    C语言字符串的引用方式

    在C语言程序中,字符串是存放在字符数组中的。 2. 用字符数组存放一个字符串,可以通过数组名和下标引用字符串中的一个
    的头像 发表于 03-10 14:57 1841次阅读

    字符串的相关知识

    TCL 中的数据类型只有一种:字符串。这些字符串可以是字母、数字、布尔值、标点符号等特殊字符的组合。在某些特殊命令的作用下,字符串可以向其他数据类型转换。下面将系统的讲解或回顾下
    的头像 发表于 03-29 11:41 1086次阅读

    mysql字符串包含某个字符串

    将详尽、详实、细致地探讨MySQL中字符串包含的实现方法。 在MySQL中,可以通过使用内建函数和通配符来实现字符串包含的操作。下面将详细介绍几种常用的方法: 使用LIKE通配符: L
    的头像 发表于 11-16 14:52 3655次阅读

    labview字符串如何转换为16进制字符串

    在LabVIEW中,将字符串转换为16进制字符串是一个常见的需求,尤其是在处理数据通信和硬件接口时。LabVIEW提供了多种方法来实现这一转换,包括使用内置函数、编写VI(Virtual
    的头像 发表于 09-04 15:54 1799次阅读