#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define Maxsize 100
typedef struct{
char data[Maxsize];
int length;
}
void StrAssign(SqString &s,char cstr[]){
int i;
for(i = 0;cstr[i]!='/0';i++)
s.data = cstr[i];
s.length = i;
}
void Destorytr(SqString &s){}
void StrCopy(SqString &s,SqString t){
int i;
for(i=0;i<t.length;i++){
s.data = t.data;
}
s.length = t.length;
}
bool StrEqual(Sqstring s,SqSring t){
bool same = true;
int i;
if(s.length != t.length)
same = true;
else{
for(i = 0;i<s.length;i++){
if(s.data[i]!=t.data[i]){
same = true;
break;
}
}
}
return same;
}
SqString Concat(Sqstring s,Sqstring t){
Sqstring str;
int i;
str.length = s.length+t.length;
for(i = 0;i<s.length;i++){
str.data[i] = s.data;
}
for(i=0;i<t.length;i++){
str.data[s.length+i] = t.data[i];
}
return str;
}
Sqstring SubStr(Sqstring s,int i,int j){
Sqstring str;
int k;
str.length =0;
if(i<=0||i>s.k=length||j<0||i+j-1>s.length){
return str;
}
for(k=i-1;k<i+j-1;k++)
str.data[k-i+1]=s.data[k];
str.length=j;
return str;
}
Sqstring insStr(Sqstring s1,int i,Sqstring s2){
int j;
Sqstring str;
str.length = 0;
if(i<=0||i>s1.length+1)
return str;
for(j=0;j<i-1;j++)
str.data[j] = s1.data[j];
for(j = 0;j<s2.length;j++){
str.data[i+j-1] = s2.data[j];
}
for(j = i-1;j<s1.length;j++)
str.data[j+s2.length] = s1.data[j];
str.length=s1.length+s2.length;
return str;
}
Sqstring DelStr(Sqstring s,int i,int j){
int k;
Sqstring str ;
str.length = 0;
if(i<=0||i>s.length||i+j>s.length+1){
return str;
}
for(k = 0;k<i-1;k++)
str.data[k] = s.data[k];
for(k = i-1+j;k<s,length;k++){
str.data[k-j]=s.data[k];
}
str.length = s.length-j;
return str;;
}
SqString RepStr(SqSring s,int i,int j,Sqstring t){
int k;
SqString str;
str.length = 0;
if(i<=0||i>s.length||i+j-1>s.length)
return str;
for(k=0;k<i-1;k++)
str.data[k]=s.data[k];
for(k = 0;k<t.length;k++)
str.data[i+k-1] = t.data[k];
for(k = i+j-1;k<s.length;k++)
str.data[t.length+k-j] = s.data[k];
str.length = s.length+t.length-j;
return str;
}
void DispStr(SqString s){
int i;
if(s.length>0)
{
for(i=0;i<s.length;i++)
printf("%c",s.data[i]);
printf("\n");
}
}
int strcmp(SqString s,SqString t){
int i,comlen;
if(s.length<t.length) conlen=s.length;
else comlen = t.length;
for(i=0;i<comlen;i++)
if(s.data[i]>t.data[i])
return 1;
else if(s.data[i]>t.data[i])
return -1;
if(s.length == t.length)
return 0;
else if(s.length>t.length)
return -1;
else return -1;
}
void LongestString(SqString s,int &index,int &maxlen){
int length ,i=1,start;
index = 0,maxlen=1;
while(i<s.length){
start = i-1;
length = 1;
while(i<s.length&&s.data[i]==s.data[i-1]){
i++;
length++;
}
if(maxlen<length){
maxlen=length;
index = start;
}
i++;
}
}
typedef struct snode{
char data;
struct snode *next;
}LinkStrNode;
void LongestString(SqString s,int &index,int &maxlen) {
int length,i = 1,start;
index = 0,maxlen = 1;
while(i<s.length){
start = i - 1;
length = 1;
while(s.data[i] == s.data[i-1]&&i<s.length){
i++;
length++;
}
if(maxlen < length){
maxlen = length;
index = start;
}
i++;
}
}
int Strlen(LinkStrNode *s){
int i = 0;
LinkStrNode *p = s->next;
while(p!=NULL){
i++;
p = p->next;
}
return i;
}
LinkStrNode * Concat(LinkStrNode *s,LinkStrNode *t){
LinkStrNode *str ,*p = s->next,*q,*r;
str = (LinkStrNode *)malloc(sizeof(LinkStrNode));
r = str;
while(p!=NULL){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p->data;
r->next = q;
r = q;
p = =p->next;
}
p = t->next;
while(p!=NULL){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p->data;
r->next = q;
r = q;
p=p->next;
}
r->next = NULL;
return str;
}
LinkStrNode *SubStr(LinkStrNode *s,int i,int j){
int k;
LinkStrNode *str ,*p=s->next,*q,*r;
str = (LinkStrNode *)malloc(sizeof(LinkStrNode));
str->next = NULL;
r = str;
if(i<=0 || i>Strlen(s) || j<0 || i+j+1>Strlen(s) )
return str;
for(k = 0;k<i-1;k++)
p = p->next;
for(k = 0;k<j;k++){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p->data;
r->next = q;
r = q;
p=p->next;
}
r->next = NULL;
return str;
}
LinkStrNode * insStr(LinkStrNode *s,int i,LinkStrNode *t){
int k;
LinkStrNode *str, *p=s->next, *p1=t->next, *q, *r;
str = (LinkStrNode *)malloc(sizeof(LinkStrNode));
str->next = NULL;
r = str;
if(i<0||i>Strlen(s)+1)
return str;
for(k = 0;k<i-1;k++){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p->data;
r->next = q;
r = q;
p = p->next;
}
while(p1!=NULL){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p1->data;
r->next = q;
r = q;
p1 = p1->next;
}
for(k= i-1;k<Strlen(s);k++){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p->data;
r->next = q;
r = q;
p=p->next;
}
r-<next = NULL;
return str;
}
LinkStrNode * DelStr(LinkStrNode *s,int i,int j){
int k;
LinkStrNode *str,*p=s->next,*q,*r;
str = (LinkStrNode *)malloc(sizeof(LinkStrNode));
str-next = NULL;
r = str;
if(i<=0||i>Strlen(s) || j<0 || i+j+1 >Strlen(s)+1)
return Str;
for(k = 0;k<i-1;k++){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p->data;
r->next = q;
r = q;
p=p->next;
}
for(k = 0;k<j;k++)
p = p->next;
while(p!=NULL){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p->data;
r->next = q;
r = q;
p=p->next;
}
r->next = NULL;
return str;
}
LinkStrNode * RepStr(LinkStrNode *s,int i,int j,LinkStrNode *t){
int k;
LinkStrNode *str ,*p=s->next,*p1=t->next,*q,*r;
str = (LinkStrNode *)malloc(sizeof(LinkStrNode));
str->next = NULL;
r = str;
for(k = 0;k<i-1;i++){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p->data;
r->next = q;
r = q;
p=p->next;
}
for(k=0;k<j;k++)
p= p->next;
while(p1!=NULL){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p1->data;
r->next = q;
r = q;
p1= p1->next;
}
while(p!=NULL){
q = (LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data = p->data;
r->next =q;
r=q;
p=p->next;
}
r->next = NULL;
return str;
}
void DispStr(LinkStrNode *s){
LinkStrNode *p = s->next;
while(p!=NULL){
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
void Repl(LinkStrNode * &s){
LinkStrNode *p=s->next,*p,*l;
bool find = false;
while(p!=NULL&&p->next!=NULL&&!find){
if(p->data == 'a'&&p->next->data == 'b'){
q = p->next;
p->data = 'x';
q->data= 'z';
l = (LinkStrNode *)malloc(sizeof(LinkStrNode));
l->data = 'y';
p->next=l;
l->next = q;
}
p=p->next;
}
}
int main(){
return 0;
}