除了顺序串,还有链串,所谓链串,就是链式存储的字符串。
下面是链串的简单实现
// 链串
#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文章
898浏览量
50589 -
字符串
+关注
关注
1文章
552浏览量
20135
发布评论请先 登录
相关推荐
请问labviEW怎样能循环显示不同的字符串?
` 本帖最后由 我爱tmac 于 2012-3-29 11:30 编辑
我想让字符串3循环显示字符串1和字符串2的字符,显示间隔为1秒,为什么不能
发表于 03-29 11:27
字符串存储相关问题
本帖最后由 小凡1314 于 2013-5-15 09:48 编辑
从单片机采集字符串数据,现在数据可以正确采集显示,可是为什么存储的时候有错误,我的所有的采样点存储以后都变成48了,无论踩的是多少,求大神解答!!谢谢!!
发表于 05-15 09:42
C语言字符串函数详解
, 函数返回string值.char *strdup(const char *strSource);函数运行中会自己调用malloc函数为复制strSource字符串分配存储空间, 然后再
发表于 06-23 23:33
(字符串公式求值)
设计一个VI,输入端为一个字符串控件,输出端为一个数值显示控件。要求输出控件显示的是输入字符串中表达式的结果,如下图所示。所有算法建议在子VI内实现,这样可以多次调用。(字符串公式求值
发表于 08-05 13:27
串口读取的字符串和字符串输入控件输入的字符串的差别
发现很多时候串口读取的字符串和字符串输入控件输入的字符串虽然看着一样,但是要进行后续操作的话,却总是不一样的。大家有过这种感受吧,知道什么原因 吗?
发表于 06-06 11:44
labview字符串输入指定字符
大家伙,问大家一个问题哇!我想实现下面的功能,怎么做啊?1、字符串可以实现输入0-9和H z k M G d B 字符,大小写忽略2、字符串
发表于 04-05 10:21
数据转换、SQL存储,十六进制字符串、正常字符串
转换为字节数组,再使用数值转字符串,注意,此时需要规定宽度,之后将字符串数组连接起来就可以了。下面既是将正常显示的字符串转回十六进制,相当于还原数据,此时这里的除数就是之前使用的宽度值这样就实
发表于 05-27 10:29
如何将一维字符串数组里的字符串转成下拉列表?
如题,本人做了一个一维字符串数组来存储IP字符串,现在想建一个下拉列表,用这个列表显示多个IP地址,能向列表里添加数组里的IP字符串,求助大神们如何解决?
发表于 05-27 20:58
如何实现字符串函数?
你好 我使用STM8S发现套件和标准固件库。我需要使用字符串函数,如strtok()。如何让这些功能在这种环境中工作。包括string.h不会工作。我需要实现字符串函数还是有更简单的方
发表于 07-09 08:37
labview字符串转换
` 本帖最后由 jingzhaojun1986 于 2020-6-12 13:58 编辑
,这个库多用于协议解析,主要实现了16进制字符串到正常字符串的显示正常字符串转换为16进制
发表于 05-19 11:50
聊聊字符串
大家好,我是惊觉,今天聊聊字符串。字符串的使用场景非常之多,人机交互和双机通信都会用到。比如:通过串口向单片机发送指令,以执行操作或配置参数。单片机读取传感器数据,数据格式是字符串。一般GPS数据
发表于 02-28 06:52
评论