数据结构串基本操作代码.docx
- 文档编号:25492942
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:11
- 大小:15.49KB
数据结构串基本操作代码.docx
《数据结构串基本操作代码.docx》由会员分享,可在线阅读,更多相关《数据结构串基本操作代码.docx(11页珍藏版)》请在冰豆网上搜索。
数据结构串基本操作代码
实验三串
//串的基本操作
#include"stdio.h"
#include"stdlib.h"
#defineMAXSTRLEN255
typedefunsignedcharSString[MAXSTRLEN+1];
voidstrlength(SStringS)//求字串并放到S[0]中
{
intm;
for(m=1;S[m]!
='\0';m++);
S[0]=m-1;
}
voidinsert(SStringS,intn,chara)//是插入的位置a是插入的字符
{
strlength(S);
inti;
for(i=S[0];i>=n;i--)
S[i+1]=S[i];
S[n]=a;
S[S[0]+2]='\0';
}
intcompare(SStringS,SStringT)
{
strlength(S);
strlength(T);
inti;
for(i=1;i<=S[0]&&i<=T[0];i++)
{
if(S[i]>T[i])
return1;
if(S[i] return-1; if(S[i]==T[i]) continue; } if(S[0]>T[0]) return1; elseif(S[0] return-1; else return0; } voidconcat(SStringT1,SStringS1,SStringS2) { strlength(S1); strlength(S2); inti; if(S1[0]+S2[0]<=MAXSTRLEN)//未截断 { for(i=1;i<=S1[0];i++) T1[i]=S1[i]; for(i=1;i<=S2[0];i++) T1[S1[0]+i]=S2[i]; } T1[S1[0]+S2[0]+1]='\0'; } voidclear(SStringS) { strlength(S); inti; for(i=1;i S[i]='\0'; S[0]=0; } intSubString(SString&Sub,SStringS,intpos,intlen) { inti; strlength(S); if(pos<1||pos>S[0]||len<0||len>S[0]-pos+1) { printf("Error! positionorlengthisoutofrange\n"); return0; } for(i=1;i<=len;i++) Sub[i]=S[pos+i-1]; Sub[i]='\0'; Sub[0]=len; return1; } intIndex(SStringS,SStringT,intpos) { inti=pos,j=1; strlength(S); strlength(T); while(i<=S[0]&&j<=T[0]) { if(S[i]==T[j]) { ++i; ++j; } else { i=i-j+2; j=1; } } if(j>T[0]) returni-T[0]; elsereturn0; } voidmain()//测试主程序 { /* SStringS; printf("请输入字符串S: "); scanf("%s",S+1); printf("\n"); printf("输入的字符串为: "); printf("%s",S+1); printf("\n"); insert(S,2,'A'); printf("插入字符后的字符串为: "); printf("%s",S+1); printf("\n"); */ /* SStringT; printf("请输入字符串T: "); scanf("%s",T+1); printf("\n"); intflag; flag=compare(S,T); printf("%d",flag); */ /* SStringS1,S2,T1; printf("请输入字符串S1: "); scanf("%s",S1+1); printf("请输入字符串S2: "); scanf("%s",S2+1); concat(T1,S1,S2); printf("连接的新字符串为: "); printf("%s",T1+1); printf("\n"); */ /* SStringS; printf("请输入字符串S: "); scanf("%s",S+1); printf("你输入的字符串为: %s\n",S+1); clear(S); printf("%s\n",S+1); */ /* SStringS,Sub; intpos,len; printf("请输入字符串S: "); scanf("%s",S+1); printf("请输入子串的位置: "); scanf("%d",&pos); printf("请输入子串的长度: "); scanf("%d",&len); if(SubString(Sub,S,pos,len)) { printf("\n子串为: %s\n",Sub+1); printf("子串的长度: %d\n",Sub[0]); } */ SStringS,T; intpos,r; printf("输入主串: "); scanf("%s",S+1); printf("输入模式串: "); scanf("%s",T+1); printf("请输入起始位置pos: "); scanf("%d",&pos); if(r=Index(S,T,pos)) printf("模式串在主串中的位置为: %d\n",r); elseprintf("匹配失败! \n"); } //字符串中字符频度 #include"Stdio.h" #include"stdlib.h" #defineMAXSTRLEN255 typedefunsignedcharSString[MAXSTRLEN+1]; typedefstructcharcp{ charzifu; intpingdu; structcharcp*next; }charcp,*Linkchar; voidStrlength(SStringS) { inti; for(i=1;S[i]! ='\0';i++); S[0]=i-1; } voidInit(Linkchar&cp) { cp=(Linkchar)malloc(sizeof(charcp)); cp->next=NULL; cp->zifu='\0'; cp->pingdu=0; } voidPingdu(SStringS,Linkchar&cp) { inti=1; charcp*p; charcp*q; while(S[i]! ='\0') { p=cp; if(p->zifu=='\0') { p->zifu=S[i]; p->pingdu++; i++; continue; } while(p->next! =NULL) { if(p->zifu==S[i]) { p->pingdu++; break; } p=p->next; } if(p->next==NULL) { if(p->zifu==S[i]) { p->pingdu++; } else { q=(Linkchar)malloc(sizeof(charcp)); q->zifu=S[i]; q->pingdu=1; q->next=NULL; p->next=q; } } i++; } } voidmain() { Linkcharcp; Init(cp); SStringS; printf("请输入字符串S: "); scanf("%s",S+1); Pingdu(S,cp); charcp*p=cp; while(p! =NULL) { printf("字符%c的频度为%d\n",p->zifu,p->pingdu); p=p->next; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 基本 操作 代码