串(顺序串)
来源:互联网 发布:淘宝付款失败钱扣了 编辑:程序博客网 时间:2024/06/05 00:20
#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXSIZE 100//串的结构体typedef struct{ char str[MAXSIZE]; int len;}SeqString;//初始化串SeqString *InitString(SeqString *S){ S=(SeqString *)malloc(sizeof(SeqString)); S->len=0; return S;}//求串长int StrLen(SeqString *S){ return S->len;}//创建顺序串void CreatString(SeqString *S){ char str[MAXSIZE]; printf("Input String:"); gets(str); while(str[S->len]!='\0') { S->str[S->len]=str[S->len]; S->len++; } S->str[S->len]='\0';}//遍历顺序串void TraverseSting(SeqString *S){ puts(S->str);}//复制顺序串SeqString *StrCopy(SeqString *S,SeqString *s){ int i; s=InitString(s); for(i=0;i<=S->len;i++) { s->str[i]=S->str[i]; } s->len=S->len; return s;}//求顺序串子串SeqString *SubStr(SeqString *S,int pos,int len,SeqString *Sub){ Sub=InitString(Sub); int i; if(pos<1||pos>S->len||len<0||len>S->len-pos-1) { printf("Position or len error!\n"); return 0; } for(i=0;i<len;i++) { Sub->str[i]=S->str[pos+i-1]; } Sub->str[i]='\0'; Sub->len=len; return Sub;}//删除顺序串子串SeqString *DeleteStr2(SeqString *S,int pos,int len){ int i; if(pos<1||pos>S->len||len<0||len>S->len-pos+1) { printf("Position or len error!\n"); return 0; } for(i=pos+len-1;i<S->len;i++) { S->str[i-len]=S->str[i]; } S->len=S->len-len; S->str[S->len]='\0'; return S;}//KMP算法-next数组void get_next(SeqString *S,int *next){ int i=1,j=0; next[1]=0; while(i<S->len) { if(j==0||S->str[i]==S->str[j]) { ++i; ++j; next[i]=j; } else j=next[j]; }}int Index_kmp(SeqString *S,SeqString *t){ int i=1,j=1; int next[MAXSIZE]; get_next(S,next); t=InitString(t); CreatString(t); while(i<=S->len&&j<=t->len) { if(j==0||S->str[i-1]==t->str[j-1]) { ++i; ++j; } else j=next[j]; } if(j>t->len) { printf("%d!\n",i-t->len); return i-t->len; } else return 0;}//主函数int main(){ SeqString *S; S=InitString(S); CreatString(S);}
0 1
- 顺序串
- 顺序串
- 顺序串
- 顺序串
- 顺序串
- 串(顺序串)
- 串的顺序存储
- 顺序串的实现
- 顺序串算法
- 顺序串算法2
- 串的顺序存储
- 顺序串的实现
- _DataStructure_C_Impl:顺序串
- 顺序串算法
- 顺序串算法
- 第八周;顺序串
- 数据结构—顺序串
- c 数据结构 顺序串
- vim 永久显示行号
- [分治最小割] BZOJ 4519 [Cqoi2016]不同的最小割
- libusb无驱设计(USB设备开发)
- [组合 错排] BZOJ 4517 [Sdoi2016]排列计数
- TCP相关面试题总结
- 串(顺序串)
- Cause: java.sql.SQLException: Cannot execute statement: impossible to write to binary log
- jni 调用
- 快速排序
- python 2.x和3.x中maketrans和translate函数的使用
- 开发中关于手机的听筒模式的设置
- 使用 Apache httpd 搭建 HTTP/HTTPS/FTP (正向)代理服务器
- iOS学习笔记37-时间和日期计算
- 将中文数字表示的数值转化成阿拉伯数字,如“三亿零六百零七万零九百零六=306070906”