针对数据结构课程设计串的基本操作演示做的编程!!
'a':v=&A;flag1=0;break;
case 'A':v=&A,flag1=0;break;
case 'b':v=&B,flag1=0;break;
case 'B':v=&B,flag1=0;break;
case 'c':v=&C,flag1=0;break;
case 'C':v=&C,flag1=0;break;
case 'd':v=&D,flag1=0;break;
case 'D':v=&D,flag1=0;break;
case 'e':v=&E,flag1=0;break;
case 'E':v=&E,flag1=0;break;
case 'f':v=&F,flag1=0;break;
case 'F':v=&F,flag1=0;break;
case 'g':v=&G,flag1=0;break;
case 'G':v=&G,flag1=0;break;
default :printf("输入格式错误,请重新输入.\n");
}
}
if(s->length<t->length||v->length==0)
exit(1);
if(!(abc=(int *)malloc(s->length/t->length*sizeof(int))))
exit(1);
while(i<s->length)
{
if(s->ch[i]==t->ch[j])
{
i++;
j++;
if(j==t->length)
{
j=0;
abc[k]=i-1;
k++;
}
}
else
{
i=i-j+1;
j=0;
}
}
if(k==0)
{
printf("未找到匹配的子串");
exit(1);
}
if(t->length<v->length)
{
if(!(s->ch=(char *)realloc(s->ch,(s->length+k*(v->length-t->length))*sizeof(char)+1)))
exit(1);
for(l=0;l<k;l++)
{
for(i=s->length+1;i>abc[l];i--)
s->ch[i+v->length-t->length]=s->ch[i];
for(i=0;i<v->length;i++)
s->ch[abc[l]-t->length+i+1]=v->ch[i];
abc[l+1]=abc[l+1]-t->length+v->length;
}
}
else
{
for(l=0;l<k;l++)
{
for(i=abc[l];i<=s->length;i++)
s->ch[i-t->length+v->length]=s->ch[i];
for(i=0;i<v->length;i++)
s->ch[abc[l]-t->length+i+1]=v->ch[i];
abc[l+1]=abc[l+1]-t->length+v->length;
}
}
}
void strdelete(void)/*串删除*/
{
int flag1=1;
hstring *s;
char hc;
printf("请输入要删除的串标示\n");
while(flag1)
{
fflush(stdin);
scanf("%c",&hc);
switch(hc)
{
case 'a':s=&A;flag1=0;break;
case 'A':s=&A,flag1=0;break;
case 'b':s=&B,flag1=0;break;
case 'B':s=&B,flag1=0;break;
case 'c':s=&C,flag1=0;break;
case 'C':s=&C,flag1=0;break;
case 'd':s=&D,flag1=0;break;
case 'D':s=&D,flag1=0;break;
case 'e':s=&E,flag1=0;break;
case 'E':s=&E,flag1=0;break;
case 'f':s=&F,flag1=0;break;
case 'F':s=&F,flag1=0;break;
case 'g':s=&G,flag1=0;break;
case 'G':s=&G,flag1=0;break;
default :printf("输入格式错误,请重新输入.\n");
}
}
if(s->ch)
free(s->ch);
s->ch=NULL;
s->length=0;
}
void quit(void)/*退出程序*/
{
printf("退出程序\n");
exit(1);
}