数据结构Word文档格式.docx

上传人:b****5 文档编号:21704370 上传时间:2023-01-31 格式:DOCX 页数:30 大小:191.98KB
下载 相关 举报
数据结构Word文档格式.docx_第1页
第1页 / 共30页
数据结构Word文档格式.docx_第2页
第2页 / 共30页
数据结构Word文档格式.docx_第3页
第3页 / 共30页
数据结构Word文档格式.docx_第4页
第4页 / 共30页
数据结构Word文档格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

数据结构Word文档格式.docx

《数据结构Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构Word文档格式.docx(30页珍藏版)》请在冰豆网上搜索。

数据结构Word文档格式.docx

顺序串(除主函数外)

StrAssign(SqString&

str,charcstr[]):

由串常量cstr创建串str

StrCopy(SqString&

s,SqStringt):

将串t复制到串S

StrEqual(SqStrings,SqStringt):

判断两个串S和t是否相同

Strlength(SqStrings):

求串S的长度

Concat(SqStrings,SqStringt):

将串t连接到串s之后产生新串

SubStr(SqStrings,inti,intj):

由串s的第i个字符开始的j个字符产生新串

InsStr(SqStrings1,inti,SqStrings2):

由串s2插入到串s1的第i个位置处

DelStr(SqStrings,inti,intj):

删除串s的第i个字符开始的j个字符产生新串

RepStr(SqStrings,inti,intj,SqStringt):

将串s的第i个字符开始的j个字符替换成串t产生新串

DispStr(SqStrings):

输出串s的所有元素

链串(除主函数外)

StrAssign(LiString*&

s,chart[]):

StrCopy(LiString*&

s,LiString*t):

StrEqual(LiString*s,LiString*t):

Strlength(LiString*s):

Concat(LiString*s,LiString*t):

SubStr(LiString*s,inti,intj):

InsStr(LiString*s1,inti,LiString*s2):

DelStr(LiString*s,inti,intj):

删除串s的第i个字符开始的j个字符产生

RepStr(LiString*s,inti,intj,LiString*t):

DispStr(LiString*str):

程序代码清单…

顺序串的源代码:

//文件名:

aglo4-1.cpp

#include<

stdio.h>

#defineMaxSize100//最多的字符个数

typedefstruct

{

chardata[MaxSize];

//定义可容纳MaxSize个字符的空间

intlength;

//标记当前实际串长

}SqString;

voidStrAssign(SqString&

str,charcstr[])//由串常量cstr创建串str

inti;

for(i=0;

cstr[i]!

='

\0'

;

i++)

str.data[i]=cstr[i];

str.length=i;

}

voidStrCopy(SqString&

s,SqStringt)//将串t复制到串S

i<

t.length;

s.data[i]=t.data[i];

s.length=t.length;

intStrEqual(SqStrings,SqStringt)//判断两个串S和t是否相同

intsame=1,i;

if(s.length!

=t.length)//长度不相等时返回0

same=0;

else

{

for(i=0;

s.length;

if(s.data[i]!

=t.data[i])//有一个对应字符不相同时返回0

same;

}

returnsame;

intStrlength(SqStrings)//求串S的长度

returns.length;

SqStringConcat(SqStrings,SqStringt)//将串t连接到串s之后产生新串

SqStringstr;

str.length=s.length+t.length;

i++)//将s.data[0..s.length-1]复制到str

str.data[i]=s.data[i];

i++)////将t.data[0..t.length-1]复制到str

str.data[s.length+i]=t.data[i];

returnstr;

SqStringSubStr(SqStrings,inti,intj)//由串s的第i个字符开始的j个字符产生新串

intk;

str.length=0;

if(i<

=0||i>

s.length||j<

0||i+j-1>

s.length)

printf("

参数不正确\n"

);

//参数不正确时返回空串

returnstr;

for(k=i-1;

k<

i+j-1;

k++)//将s.data[i...i+j]复制到str

str.data[k-i+1]=s.data[k];

str.length=j;

SqStringInsStr(SqStrings1,inti,SqStrings2)//由串s2插入到串s1的第i个位置处

intj;

0||i>

s1.length+1)

returns1;

for(j=0;

j<

i-1;

j++)//将s1.data[0...i+2]复制到str

str.data[j]=s1.data[j];

s2.length;

j++)//将s2.data[0...s2.length-1]复制到str

str.data[i+j-1]=s2.data[j];

for(j=i-1;

s1.length;

j++)//将s1.data[i-1...s1.length-1]复制到str

str.data[s2.length+j]=s1.data[j];

str.length=s1.length+s2.length;

SqStringDelStr(SqStrings,inti,intj)//删除串s的第i个字符开始的j个字符产生新串

s.length||i+j>

s.length+1)

{

//参数不正确时返回空串

for(k=0;

k++)//将s.data[0...i+2]复制到str

str.data[k]=s.data[k];

for(k=i+j-1;

k++)//将s.data[i+j-1...s1.length-1]复制到str

str.data[k-j]=s.data[k];

str.length=s.length-j;

SqStringRepStr(SqStrings,inti,intj,SqStringt)//将串s的第i个字符开始的j个字符替换成串t产生新串

s.length||i+j-1>

s.length)//参数不正确时返回空串

k++)//将s1.data[0...i+2]复制到str

k++)//将t.data[0...t.length-1]复制到str

str.data[i+k-1]=t.data[k];

k++)//将s.data[i+j-1...s1.length-1]复制到str

str.data[t.length+k-j]=s.data[k];

str.length=s.length-j+t.length;

voidDispStr(SqStrings)//输出串s的所有元素

if(s.length>

0)

printf("

%c"

s.data[i]);

\n"

exp4-1.cpp

#defineMaxSize100

externvoidStrAssign(SqString&

str,charcstr[]);

externvoidStrCopy(SqString&

s,SqStringt);

externintStrEqual(SqStrings,SqStringt);

externintStrlength(SqStrings);

externSqStringConcat(SqStrings,SqStringt);

externSqStringSubStr(SqStrings,inti,intj);

externSqStringInsStr(SqStrings1,inti,SqStrings2);

externSqStringDelStr(SqStrings,inti,intj);

externSqStringRepStr(SqStrings,inti,intj,SqStringt);

externvoidDispStr(SqStringstr);

voidmain()

SqStrings,s1,s2,s3,s4;

printf("

(1)建立串s和串s1\n"

StrAssign(s,"

abcdefghefghijklmn"

StrAssign(s1,"

xyz"

(2)输出串s:

"

DispStr(s);

(3)串s的长度:

%d\n"

Strlength(s));

(4)由串s的第9个字符位置插入串s1而产生串s2\n"

s2=InsStr(s,9,s1);

(5)输出串s2:

DispStr(s2);

(6)删除串s的第2个字符开始的5个字符产生新串s2\n"

s2=DelStr(s,2,3);

(7)输出串s2:

(8)将串s的第2个字符开始的5个字符替换成s1产生新串s2\n"

s2=RepStr(s,2,5,s1);

(9)输出串s2:

(10)提取串s的第2个字符开始的10个字符产生新串s3\n"

s3=SubStr(s,2,10);

(11)输出串s3:

DispStr(s3);

(12)将串s1连接到串s2之后产生新串s4\n"

s4=Concat(s1,s2);

(13)输出串s4:

DispStr(s4);

链串的源代码:

aglo4-2.cpp

malloc.h>

typedefstructsnode

chardata;

structsnode*next;

}LiString;

voidStrAssign(LiString*&

s,chart[])

LiString*r,*p;

s=(LiString*)malloc(sizeof(LiString));

s->

next=NULL;

r=s;

t[i]!

p=(LiString*)malloc(sizeof(LiString));

p->

data=t[i];

r->

next=p;

r=p;

voidStrCopy(LiString*&

s,LiString*t)

LiString*r,*p=t->

next,*q;

while(p!

=NULL)//将t的所有结点复制到s

q=(LiString*)malloc(sizeof(LiString));

q->

data=p->

data;

q->

p=p->

next;

intStrEqual(LiString*s,LiString*t)

LiString*p=t->

next,*q=t->

=NULL&

&

q!

p->

data==q->

data)

q=q->

if(p==NULL&

q==NULL)

return1;

return0;

intStrlength(LiString*s)

inti=0;

LiString*p=s->

=NULL)

i++;

p=p->

returni;

LiString*Concat(LiString*s,LiString*t)

LiString*r,*str,*p=s->

str=(LiString*)malloc(sizeof(LiString));

r=str;

=NULL)//将t的所有结点复制到str

p=t->

next=q;

r=q;

LiString*SubStr(LiString*s,inti,intj)

LiString*str,*p=s->

next,*q,*r;

str->

Strlength(s)||j<

Strlength(s))

k++)

for(k=1;

=j;

k++)//将s的第i个结点开始的j个结点复制到str

LiString*InsStr(LiString*s,inti,LiString*t)

next,*p1=t->

Strlength(s)+1)

k++)//将s的前i个结点复制到str

while(p1!

=NULL)//将t的所有结点复制到str

data=p1->

p1=p1->

=NULL)//将*p及其后的结点复制到str

LiString*DelStr(LiString*s,inti,intj)

k++)//将s的前i-1个结点复制到str

k++)//让p沿next跳j个结点

LiString*RepStr(LiString*s,inti,intj,LiString*t)

j;

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

当前位置:首页 > 工作范文 > 其它

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

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