首页 / 算法 / 链串的各种基本运算算法(1)
链串的各种基本运算算法(1)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了链串的各种基本运算算法(1),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2078字,纯文字阅读大概需要3分钟。
内容图文
![链串的各种基本运算算法(1)](/upload/InfoBanner/zyjiaocheng/629/ec424dabb33c4b8d8571680e14abce39.jpg)
因为插入,删除,替换操作代码比较长,所以放在下一篇
说明链串节点类型
typedef struct Node {
char data;
struct Node* next;
}linkstrnode;
字符串赋值为链串
void strassign(linkstrnode*& L, char str[]) {
linkstrnode* r, * s;
L = (linkstrnode*)malloc(sizeof(linkstrnode));
r = L;
for (int i = 0; str[i] != '\n'; i++) {
s = (linkstrnode*)malloc(sizeof(linkstrnode));
s->data[i] = str[i];
r->next = s;
r = s;
}
r->next = NULL;
}
销毁串
void destoryste(linkstrnode*& L) {
linkstrnode* r, * s;
r = L;
s = L->next;
while ( s != NULL ) {
free(r);
r = s;
s = r->next;
}
free(r);
}
复制串
void strcopy(linkstrnode*& t, linkstrnode* s) {
linkstrnode* p = s->next, * q, * r;
t = (linkstrnode*)malloc(sizeof(linkstrnode));
r = t;
while ( p != NULL ) {
q = (linkstrnode*)malloc(sizeof(linkstrnode));
q->data = p->data;
r->next = q;
r = q;
p = p->next;
}
r->next = NULL;
}
判断串相等
void strequal(linkstrnode* s, linkstrnode* t) {
linkstrnode* p = s->next, * q = t->next;
while ( p != NULL && q != NULL && p->data == q->data ) {
p = p->next;
q = q->next;
}
if ( p == NULL && q == NULL ) {
printf("两串相等\n");
}
else {
printf("两串不等\n");
}
}
求串长
int strlength(linkstrnode* s) {
int i = 0;
linkstrnode* p = s->next;
while (p != NULL) {
i++;
p = p->next;
}
return i;
}
串连接
linkstrnode* concat(linkstrnode* s, linkstrnode* t) {
linkstrnode* str, * p = s->next, * q, * r;
str = (linkstrnode*)malloc(sizeof(linkstrnode));
r = str;
while (p != NULL) {
q = (linkstrnode*)malloc(sizeof(linkstrnode));
q->data = p->data;
r->next = q;
r = q;
p = p->next;
}
p = t->next;
while (p!=NULL) {
q = (linkstrnode*)malloc(sizeof(linkstrnode));
q->data = p->data;
r->next = q;
r = q;
p = p->next;
}
r->next = NULL;
return str;
}
求子串
linkstrnode* substr(linkstrnode* s, int i, int j) {
int k;
linkstrnode* str, * p = s->next, * q, * r;
str = (linkstrnode*)malloc(sizeof(linkstrnode));
str->next = NULL;
r = str;
if ( i <= 0 || i > strlength(s) || j < 0 || i + k - 1 > strlength(s)) {
return str;
}
for ( k = 0; k < i - 1; k++) {
p = p->next;
}
for ( k = 0; k <= j; k++) {
q = (linkstrnode*)malloc(sizeof(linkstrnode));
q->data = p->data;
r->next = q;
r = q;
p = p->next;
}
r->next = NULL;
return str;
}
内容总结
以上是互联网集市为您收集整理的链串的各种基本运算算法(1)全部内容,希望文章能够帮你解决链串的各种基本运算算法(1)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。