#include #include #include #define chunksize 10
#define stuff '#'
typedef struct chunk
chunk;//串的結點型別定義
typedef struct
linkstring;
void initstring(linkstring *s);//初始化字串
int strassign(linkstring *s,char *cstr);//生成串
int strempty(linkstring s);//判斷出串是否為空
int strlength(linkstring s);//求串長度
int strcopy(linkstring *t,linkstring s);//串的複製操作
int tochars(linkstring s,char **cstr);//串的轉換操作
int strcompare(linkstring s,linkstring t);//串的比較操作
int strconcat(linkstring *t,linkstring s);//串的連線操作
int strinsert(linkstring *s,int pos,linkstring t);//串的插入操作
int strdelete(linkstring *s,int pos,int len);//串的刪除操作
int substring(linkstring *sub,linkstring s,int pos,int len);//取子串操作
void clearstring(linkstring *s);//清空串操作
#include "linkstring.h"
void initstring(linkstring *s)//初始化字串
int strassign(linkstring *s,char *cstr)//生成串
s->length = len;
j = len/chunksize;
if(len % chunksize)
for(i = 0;i < j;i++)
for(k = 0;k < chunksize && *cstr;k++)
if(0 == i)
else
if(!*cstr)
} }
return 1;
} int strempty(linkstring s)//判斷出串是否為空
else
} int strlength(linkstring s)//求串長度
int strcopy(linkstring *t,linkstring s)//串的複製操作
flag = strassign(t,str);
free(str);
return flag;
} int tochars(linkstring s,char **cstr)//串的轉換操作
q = *cstr;
while(p)
} p = p->next ;
} (*cstr)[s.length] = 0;
return 1;
} int strcompare(linkstring s,linkstring t)//串的比較操作
if(!tochars(t,&q))
for(;*p != '\0'&&*q != '\0';)
else
} free(p);
free(q);
if(*p == '\0'||*q == '\0')
else
} int strconcat(linkstring *t,linkstring s)//串的連線操作
t->head = s1.head ;
s1.tail->next = s2.head ;
t->tail = s2.tail ;
t->length = s1.length + s2.length ;
return 1;
} int strinsert(linkstring *s,int pos,linkstring t)//串的插入操作
if(!tochars(*s,&s1))
if(!tochars(t,&t1))
j = strlen(s1);
s1 = (char*)realloc(s1,(j+strlen(t1)+1)*sizeof(char));
for(i = j;i >= pos-1;i--)
for(i = 0;i <(int)strlen(t1);i++)
initstring(s);
flag = strassign(s,s1);
free(s1);
free(t1);
return flag;
} int strdelete(linkstring *s,int pos,int len)//串的刪除操作
if(!tochars(*s,&str))
for(i = pos+len-1;i <= (int)strlen(str);i++)
initstring(s);
flag = strassign(s,str);
free(str);
return flag;
} int substring(linkstring *sub,linkstring s,int pos,int len)
if(!tochars(s,&str))
t = pos+str-1;
t[len] = '\0';
flag = strassign(sub,t);
free(str);
return flag;
}//取子串操作
void clearstring(linkstring *s)//清空串操作
s->head = null;
s->tail = null;
s->length = 0;
}
YTU 3008 鏈串的基本運算
時間限制 1 sec 記憶體限制 128 mb 提交 1 解決 1 編寫乙個程式,實現鏈串的各種基本運算,主函式已給出,請補充每一種方法。1 建立串s abcdefghefghijklmn 和串s1 xyz 2 輸出串s 3 輸出串s的長度 4 在串s的第九個字元位置插入串s1而產生s2 5 輸出串...
鏈串的基本演算法
cpp cpp include include using namespace std typedef class bunch linkbunch,link void creat linkbunch linkbunch l,char t void strcopy linkbunch l1,linkb...
堆串的基本運算
include include include include heapstring.h void main heapstring.h include include includetypedef struct heapstring void initstring heapstring s 串的初始...