数据结构_字符串的操作_c/c++
来源:互联网 发布:怎样装饰淘宝店铺 编辑:程序博客网 时间:2024/06/05 11:25
#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXLEN 10typedef struct{char ch[MAXLEN];int len;//串中最后一个字符所在下标 }Str;int strInsert(Str* s,int pos,Str* t){int i;if(pos<0||pos>s->len)return 0;if(s->len+t->len+1<MAXLEN)//插入后串长小于MAXLEN{for(i=s->len+t->len+1;i>t->len+pos;i--)s->ch[i] = s->ch[i-t->len-1];for(i=0;i<=t->len;i++)s->ch[pos+i] = t->ch[i];s->len = s->len+t->len+1;}else{if(pos+t->len+1<MAXLEN){//插入后串长大于MAXLEN,但串t可以全部插入for(i=MAXLEN-1;i>t->len+pos;i--){s->ch[i] = s->ch[i-t->len-1];}for(i=0;i<=t->len;i++)s->ch[pos+i] = t->ch[i];s->len = MAXLEN-1;}else{for(i=0;i<MAXLEN-pos;i++){s->ch[i+pos] =t->ch[i]; }s->len=MAXLEN-1;}}return 1;}int strDelete(Str*s,int pos,int len){//在串中删除序号为pos起长度为len个字符 int i;if(pos<0||pos>(s->len-len))return 0;for(i=pos+len;i<=s->len;i++)s->ch[i-len] = s->ch[i];s->len-=len;return 1; }/*串拷贝 */void strCopy(Str* s,Str* t){int i;for(i = 0;i<=t->len;i++){s->ch[i] = t->ch[i]; }s->len = t->len;}/*串比较函数*/int strCompare(Str s,Str t){int i;for(i=0;i<=s.len&&i<=t.len;i++)if(s.ch[i]!=t.ch[i])return s.ch[i]-t.ch[i];return (s.len-t.len);} /*串连接函数*/int strCat(Str *s,Str t){int i ,flag = 0;if(s->len+t.len+1<MAXLEN){for(i = 0;i<=t.len;i++)s->ch[s->len+1+i] = t.ch[i];s->len = s->len+t.len+1;flag = 1;}else if(s->len+1<MAXLEN){for(i=s->len+1;i<MAXLEN;i++)s->ch[i] = t.ch[i-s->len-1];s->len = MAXLEN-1;}return flag;//flag为一为全部连接否则是部分连接或无法连接 } /*求子串函数*/int subString(Str s,Str *sub,int pos,int len){int i;if(pos<0||pos>s.len||pos+len>s.len||len<1){sub->len = 0;return 0;}for(i = 0;i<len;i++)sub->ch[i] = s.ch[pos+i];sub->len = len-1;return 1;} /*定位函数*/int strIndex(Str*s,int pos,Str t){int i=pos,j=0;while(i<=s->len&&j<=t.len){if(!(s->ch[i]-t.ch[j])){i++;j++;}else{i=i-j+1;j=0;}}if(j>t.len)return i-j;return 0;} void scan(Str* t){printf("请输入\n"); scanf("%s",t->ch);t->len = strlen(t->ch)-1;}void print(Str *t){int i ;for (i = 0;i<=t->len;i++)printf("%c",t->ch[i]);}int main(void){Str t;Str * s = (Str*) malloc(sizeof(Str));//scan(s);scan(&t);//int i = strIndex(s,2,t);//strInsert(s,2,&t);//subString(*s,&t,2,3);//strCat(s,t);//int i = strCompare(*s,t);//strDelete(s,2,3);strCopy(s,&t);//printf("%d",i);print(s);return 0;}
0 0
- 数据结构_字符串的操作_c/c++
- 数据结构_串_串的一些操作_C++实现
- 数据结构_带有结点的单链表相关操作_C语言源代码
- 数据结构_顺序栈的建立及相关操作_C语言源代码
- 数据结构_链栈的建立与相关操作_C语言源代码
- 数据结构_循环队列相关操作_C语言源代码
- 数据结构_单链表的插入与删除_C语言源代码
- 数据结构_求二叉树的宽度_C语言源代码
- C++_C风格字符串
- 数据结构_队列_用链表动态建立释放节点实现队列各种操作_C++实现
- 读书笔记_C#技术内幕_第二十五章(字符串操作)(StringBuilder,字符串格式化)
- 数据结构_多项式_C语言源代码
- 数据结构与算法_c#_猎豹网校
- 数据结构_串_串的模式匹配_KMP算法_C++实现
- 数据结构_树_二叉树的线索化_C++实现
- 黑马程序员_C#中字符串的一些操作
- 学习_c语言中对字符串的操作
- 读书笔记_C#技术内幕_第二十五章(字符串操作)(String类)
- 如何查找PHP中哪里符合配对有错?syntax error, unexpected $end in D:\wamp\www\index.php on
- 数据治理:让数据质量更好(data governance)
- AngularJS Scope 继承解析
- CentOS网络接口文件详解(ifcfg-eth)
- 架构高性能网站秘笈(五)——Web组件分离
- 数据结构_字符串的操作_c/c++
- swift新增两种类型
- win10 uwp 屏幕常亮
- 架构高性能网站秘笈(六)——负载均衡
- android listView多层嵌套listView显示不全问题
- android studio笔记-2
- QT 连接数据库的详细步骤
- 【快速幂】HDU2065"红色病毒"问题
- 新奇的@SafeVarargs注解