C语言-串
来源:互联网 发布:守望先锋 网络延迟严重 编辑:程序博客网 时间:2024/06/10 09:33
串的模版(String)
#include<stdio.h>#include<stdlib.h>typedef struct snode{ char data; struct snode *next;}LiString;/*---将一个字符串数组复制给串---*/void StrAssign(LiString *&s,char cstr[]){ int i; LiString *r,*p; s=(LiString *)malloc(sizeof(LiString)); r=s; for(i=0;cstr[i]!='\0';i++) { p=(LiString *)malloc(sizeof(LiString)); p->data=cstr[i]; r->next=p; r=p; } r->next=NULL;}/*---将串t赋值给串s---*/void StrCopy(LiString *&s,LiString *t) { LiString *p=t->next,*q,*r; s=(LiString *)malloc(sizeof(LiString)); r=s; while(p!=NULL) { q=(LiString *)malloc(sizeof(LiString)); q->data=p->data; r->next=q; r=q; p=p->next; } r->next=NULL;}/*---判断两个串是否相等,真true假false---*/bool StrEqual(LiString *s,LiString *t){ LiString *p=s->next,*q=t->next; while(p!=NULL&&q!=NULL&&p->data==q->data) { q=q->next; p=p->next; } if(p==NULL&&q==NULL) { return true; } else { return false; }} /*---求串长---*/int StrLength(LiString *s){ int i=0; LiString *p=s->next; while(p!=NULL) { i++; p=p->next; } return i;} /*---连接两个串(串t接在串s后边)---*/LiString *ConCat(LiString *s,LiString *t){ LiString *str,*p=s->next,*q,*r; str=(LiString *)malloc(sizeof(LiString)); r=str; while(p!=NULL) { q=(LiString *)malloc(sizeof(LiString)); q->data=p->data; r->next=q; r=q; p=p->next; } p=t->next; while(p!=NULL) { q=(LiString *)malloc(sizeof(LiString)); q->data=p->data; r->next=q; r=q; p=p->next; } r->next=NULL; return str; } /*---取子串(在串s中从第i个开始的,连续的j个字符),参数不正确则返回空串---*/LiString *SubStr(LiString *s,int i,int j){ int k; LiString *str,*p=s->next,*q,*r; str=(LiString *)malloc(sizeof(LiString)); str->next=NULL; r=str; if(i<0||i>StrLength(s)||j<0||i+j-1>StrLength(s))//参数不正确 { return str; } for(k=0;k<=j;k++) { p=p->next; } for(k=1;k<=j;k++) { q=(LiString *)malloc(sizeof(LiString)); q->data=p->data; r->next=q; r=q; p=p->next; } r->next=NULL; return str;} /*---将串s2插在串s1的第i个位置(s2的第一个字符为s1的第i个字符)参数不正确返回空串---*/LiString *InsStr(LiString *s,int i,LiString *t){ int k; LiString *str,*p=s->next,*p1=t->next,*q,*r; str=(LiString *)malloc(sizeof(LiString)); str->next=NULL; r=str; if(i<=0||i>StrLength(s)+1)//参数不正确 { return str; } for(k=1;k<i;k++) { q=(LiString *)malloc(sizeof(LiString)); q->data=p->data; r->next=q; r=q; p=p->next; } while(p1!=NULL) { q=(LiString *)malloc(sizeof(LiString)); q->data=p1->data; r->next=q; r=q; p1=p1->next; } while(p!=NULL) { q=(LiString *)malloc(sizeof(LiString)); q->data=p->data; r->next=q; r=q; p=p->next; } r->next=NULL; return str;} /*---从串s中删去第i个字符开始长度为j的子串,并返回新串参数不正确返回空串---*/LiString *DelStr(LiString *s,int i,int j) { int k; LiString *str,*p=s->next,*q,*r; str=(LiString *)malloc(sizeof(LiString)); str->next=NULL; r=str; if(i<0||i>StrLength(s)||j<0||i+j-1>StrLength(s))//参数不正确 { return str; } for(k=0;k<=i-1;k++) { q=(LiString *)malloc(sizeof(LiString)); q->data=p->data; r->next=q; r=q; p=p->next; } for(k=0;k<j;k++) { p=p->next; } while(p!=NULL) { q=(LiString *)malloc(sizeof(LiString)); q->data=p->data; r->next=q; r=q; p=p->next; } r->next=NULL; return str;}/*---在串s中,将第i个字符开始的j个子串用串t代替并返回新串,参数不正确返回空串---*/LiString * RepStr(LiString *s,int i,int j,LiString *t){ int k; LiString *str,*p=s->next,*p1=t->next,*q,*r; str=(LiString *)malloc(sizeof(LiString)); str->next=NULL; r=str; if(i<=0||i>StrLength(s)+1)//参数不正确 { return str; } for(k=0;k<i-1;k++) { q=(LiString *)malloc(sizeof(LiString)); q->data=p->data; r->next=q; r=q; p1=p1->next; } for(k=0;k<j;k++) { p=p->next; } while(p1!=NULL) { q=(LiString *)malloc(sizeof(LiString)); q->data=p1->data; q->next=NULL; r->next=q; r=q; p=p->next; } while(p!=NULL) { q=(LiString *)malloc(sizeof(LiString)); q->data=p->data; q->next=NULL; r->next=q; r=q; p=p->next; } r->next=NULL; return str;} /*---输出串s所有的元素---*/void DispStr(LiString *s){ LiString *p=s->next; while(p!=NULL) { printf("%c",p->data); p=p->next; } printf("\n");}int main(){ return 0;}
欢迎关注我的微信个人订阅号
每天多学一点0.0
0 0
- C语言-串
- 困难的串C语言
- 48-C语言-子串
- C语言
- C语言
- C语言
- C语言
- C语言
- c语言
- C语言
- C语言
- C语言
- C语言
- c语言
- C语言
- C语言
- C语言
- c语言
- Linux - 常用命令
- poj1852Ants
- srand((unsigned)(time(NULL)))的用法
- java开发之反射
- 常用SVN命令行
- C语言-串
- matlab神经网络工具箱创建神经网络
- Android中service讲解
- IL 常用指令
- Run Qt5.6 on VS2015 & “无法迁移项目文件” & "Cannot instantiate QtProjectEngine object"错误的解决方法
- 最大连续子序列和 HDU 1231 (时间复杂度为O(n))
- 回文子串算法——Manacher学习
- BigDecimal用法详解
- 弹出对话框bootbox.confirm