数据结构串基本操作代码.docx

上传人:b****9 文档编号:25492942 上传时间:2023-06-09 格式:DOCX 页数:11 大小:15.49KB
下载 相关 举报
数据结构串基本操作代码.docx_第1页
第1页 / 共11页
数据结构串基本操作代码.docx_第2页
第2页 / 共11页
数据结构串基本操作代码.docx_第3页
第3页 / 共11页
数据结构串基本操作代码.docx_第4页
第4页 / 共11页
数据结构串基本操作代码.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据结构串基本操作代码.docx

《数据结构串基本操作代码.docx》由会员分享,可在线阅读,更多相关《数据结构串基本操作代码.docx(11页珍藏版)》请在冰豆网上搜索。

数据结构串基本操作代码.docx

数据结构串基本操作代码

实验三串

//串的基本操作

#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;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1