鏈串的基本運算

2021-07-04 02:37:26 字數 3183 閱讀 6329

#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 串的初始...