数据结构之串的应用
来源:互联网 发布:js控制button点击 编辑:程序博客网 时间:2024/05/18 00:25
串的定义:
串即字符串,是最基本的非数值数据之一,它是一种特殊的线性表,特殊在于组成线性表的每一个元素都是一个字符。
串的顺序存储定义:
typedef struct{ char ch[max]; int len;}seqstring;
串的链式存储定义:
typedef struct str{ char ch[max]; struct str*next;}str;typedef struct{ str*head,*tail; int curlen;}nodestr;
串的堆分配存储定义:
typedef struct{ char *ch; int len;}hstring;
因为在顺序串上进行插入和删除操作并不方便,需要移动大量字符,且又为了节约空间,所以大多采用堆分配的串存储方式。
考虑到顺序串 应用,本文采用顺序串
串插入:输入主串,和子串,以及插入的位置,输出合并后的主串
代码
#include<stdio.h>#define max 10typedef struct { char ch[max]; int len; } seqstring; void instr(seqstring s,int i,seqstring t) { int j; if(t.len<=0) { printf("the string is empty\n"); return; } else if((i<=0)||(i>=s.len+1)) { printf("the location is unable"); return; } else if(s.len+t.len>=max) { printf("the string is too long \n"); return; } else { for(j=s.len;j>=i;j--) s.ch[j+t.len]=s.ch[j]; for(j=0;j<t.len;j++) s.ch[i+j]=t.ch[j]; s.len=s.len+t.len; printf("be inserted the string:\n"); puts(s.ch); } } int main() { seqstring string; seqstring s,t; int i,j; i=0; s.len=0; t.len=0; printf("input the string s and t:\n"); gets(s.ch); gets(t.ch); for(i=0;s.ch[i]!='\0';i++) s.len++; for(i=0;t.ch[i]!='\0';i++) t.len++; printf("input the insert location:"); scanf("%d",&i); instr(s,i,t); return 0; }
最长公共子串:输入两个字符串,求出其中最大的公共子串
代码
#include<stdio.h>#include<string.h>#define max 20typedef struct{ int len; char ch[max]; } seqstring; void comstrmax(seqstring*s,seqstring*t) { int position=0,maxlen=0,i=0,j,k,length; while(i<s->len) { j=0; while(j<t->len) { if(s->ch[i]==t->ch[j]) { length=1; for(k=1;s->ch[i+k]==t->ch[j+k];k++) length++; if(length>maxlen) { position=i; maxlen=length; } j+=length; } else j++; } i++; } printf("\nthe string:'%s'and sting:'%s'de comstrmax:",s->ch,t->ch); for(i=0;i<maxlen;i++) printf("%c",s->ch[position+i]); } int main() { seqstring*str0,*str1; printf("the str0:");scanf("%s",str0->ch); str0->len=strlen(str0->ch); printf("the str1:");scanf("%s",str1->ch); str1->len=strlen(str1->ch); comstrmax(str0,str1); return 0; }
总结
本次采用的都是顺序串的存储结构,原因无他,简单是最重要的原因,至于其他的,就是顺序串更加便于理解字符串的工作机理。
阅读全文
0 0
- 数据结构之串的应用
- 数据结构之栈的应用
- 数据结构之树的应用
- 数据结构之图的应用
- 数据结构之树的应用
- 数据结构之 栈的应用
- 数据结构栈的应用之括号匹配
- 数据结构之栈的应用----迷宫求解
- 数据结构之 栈的应用 括号匹配
- 数据结构学习笔记之递归的应用
- 【数据结构】栈的应用之表达式计算器
- SDTU 数据结构之顺序表的应用
- 数据结构之顺序栈的应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 线程池-自定义线程池<二>
- Tomcat启动内存溢出
- mybatis项目构建过程附源码下载
- mmap 认知
- 文件操作
- 数据结构之串的应用
- 折半查找
- HTML 编辑器
- Trafodion 表重命名后查看占用空间
- android中PopupWindow的使用教程
- Linux ELF文件格式分析---objcopy命令的使用
- mysql中拼接字符串concat
- 解决robotframework引入自写库连接mysql数据库报错问题“ascii codec can’t decode byte oxd7 in position……”
- python核心编程第三章学习笔记-----练习题