串的索引存储.docx

上传人:b****8 文档编号:10908601 上传时间:2023-02-23 格式:DOCX 页数:16 大小:19.29KB
下载 相关 举报
串的索引存储.docx_第1页
第1页 / 共16页
串的索引存储.docx_第2页
第2页 / 共16页
串的索引存储.docx_第3页
第3页 / 共16页
串的索引存储.docx_第4页
第4页 / 共16页
串的索引存储.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

串的索引存储.docx

《串的索引存储.docx》由会员分享,可在线阅读,更多相关《串的索引存储.docx(16页珍藏版)》请在冰豆网上搜索。

串的索引存储.docx

串的索引存储

串的索引存储

一.串修改的原则:

1.字符的修改:

刷新覆盖,索引区不发生改变。

2.字符的删除:

删除字符后,其后面的字符发生移动,索引发生改变,即减一。

3.字符的插入:

插入字符后,其后面的字符发生移动,索引发生改变,即加一。

4.字符串的等长修改:

刷新覆盖,索引区不发生改变。

5.插入字符串长度比原串长:

需要为多余的字符增添空间。

6.插入字符串长度比原串短:

7.删除一行:

索引发生改变,数据区不发生改变。

8.插入一行:

索引发生改变,数据区发生改变。

二.一段有错误的参考程序:

<有错误的代码>

mian()//字符串等长修改操作

{

Inta==5;//分别是字符的修改和删除操作

b=3;//字符串级插入操作

//缺少c,d的定义,行插入

c=a+b;

c=m++;//行级的删除操作

d=c+;//字符的插入操作

printf("%d%d%d",c,d);//字符串的删除

}

<正确的代码>

main()

{

inta=5;

intb=3;

intc,d;

c=a+b;

d=c++;

printf("%d%d",c,d);

}

三.三种表格:

表一:

字符串内容表

100

200

300

400

500

600

700

800

900

mian()

{

Inta==5;

b=3;

c=a+b;

c=m++;

d=c+;

printf(“%d%d%d”,c,d);

}

表二:

字符串在计算机中的存储样式

0000

0001

0002

0003

0004

0005

0006

0007

0008

0009

000A

000B

000C

000D

m

i

a

n

{

I

n

t

a

000E

000F

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

=

=

5

;

b

=

3

;

c

=

a

+

001C

001D

001E

001F

0020

0021

0022

0023

0024

0025

0026

0027

0028

0029

b

;

c

=

m

+

+

;

d

=

c

+

002A

002B

002C

002D

002E

002F

0030

0031

0032

0033

0034

0035

0036

0037

;

p

r

i

n

t

f

%

d

%

d

0038

0039

003A

003B

003C

003D

003E

003F

0040

0041

0042

0043

0044

0045

%

d

c

d

;

}

0046

0047

0048

0049

004A

004B

004C

004D

004E

004F

0050

0051

0052

0053

表三:

串的索引存储示意图:

串名

串头位置

串长

100

200

300

400

500

600

700

800

900

0000

0007

0009

0013

0018

001F

0026

002C

0042

7

2

10

5

7

7

6

22

2

四.修改上面错误的程序

(一)字符级的修改

1.字符的插入操作

例如:

在名为700的字符串中“d=c+;↙”中插入“+”形成新的字符串“d=c++;↙”。

这时,表一:

字符串内容表

100

200

300

400

500

600

700

800

900

mian()

{

Inta==5;

b=3;

c=a+b;

c=m++;

d=c++;

printf(“%d%d%d”,c,d);

}

表二:

字符串在计算机中的存储样式(蓝色表示不能被访问的空间)

0000

0001

0002

0003

0004

0005

0006

0007

0008

0009

000A

000B

000C

000D

m

i

a

n

{

I

n

t

a

000E

000F

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

=

=

5

;

b

=

3

;

c

=

a

+

001C

001D

001E

001F

0020

0021

0022

0023

0024

0025

0026

0027

0028

0029

b

;

c

=

m

+

+

;

d

=

c

+

002A

002B

002C

002D

002E

002F

0030

0031

0032

0033

0034

0035

0036

0037

;

p

r

i

n

t

f

%

d

%

d

0038

0039

003A

003B

003C

003D

003E

003F

0040

0041

0042

0043

0044

0045

%

d

c

d

;

}

d

=

0046

0047

0048

0049

004A

004B

004C

004D

004E

004F

0050

0051

0052

0053

c

+

+

;

表三:

串的索引存储示意图:

串名

串头位置

串长

100

200

300

400

500

600

700

800

900

0000

0007

0009

0013

0018

001F

0026(0044)

002C

0042

7

2

10

5

7

7

6(7)

22

2

2.字符的插入操作

例如:

在串名为300的字符串中“Inta==5;↙”中删除“=”形成新的字符串“Inta=5;↙”。

此时:

表一:

字符串内容表

100

200

300

400

500

600

700

800

900

mian()

{

Inta=5;

b=3;

c=a+b;

c=m++;

d=c++;

printf(“%d%d%d”,c,d);

}

表二:

字符串在计算机中的存储样式(蓝色表示不能被访问的空间)

0000

0001

0002

0003

0004

0005

0006

0007

0008

0009

000A

000B

000C

000D

m

i

a

n

{

I

n

t

a

000E

000F

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

=

5

b

=

3

;

c

=

a

+

001C

001D

001E

001F

0020

0021

0022

0023

0024

0025

0026

0027

0028

0029

b

;

c

=

m

+

+

;

d

=

c

+

002A

002B

002C

002D

002E

002F

0030

0031

0032

0033

0034

0035

0036

0037

;

p

r

i

n

t

f

%

d

%

d

0038

0039

003A

003B

003C

003D

003E

003F

0040

0041

0042

0043

0044

0045

%

d

c

d

;

}

d

=

0046

0047

0048

0049

004A

004B

004C

004D

004E

004F

0050

0051

0052

0053

c

+

+

;

表三:

串的索引存储示意图:

串名

串头位置

串长

100

200

300

400

500

600

700

800

900

0000

0007

0009

0013

0018

001F

0026

002C

0042

7

2

10(9)

5

7

7

6

22

2

3.字符的修改:

例如:

在串名为300的字符串中“Inta==5;↙”中删除“I”改成“i”形成新的字符串“inta=5;↙”。

此时:

表一:

字符串内容表

100

200

300

400

500

600

700

800

900

mian()

{

inta=5;

b=3;

c=a+b;

c=m++;

d=c++;

printf(“%d%d%d”,c,d);

}

表二:

字符串在计算机中的存储样式(蓝色表示不能被访问的空间)

0000

0001

0002

0003

0004

0005

0006

0007

0008

0009

000A

000B

000C

000D

m

i

a

n

{

i

n

t

a

000E

000F

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

=

5

b

=

3

;

c

=

a

+

001C

001D

001E

001F

0020

0021

0022

0023

0024

0025

0026

0027

0028

0029

b

;

c

=

m

+

+

;

d

=

c

+

002A

002B

002C

002D

002E

002F

0030

0031

0032

0033

0034

0035

0036

0037

;

p

r

i

n

t

f

%

d

%

d

0038

0039

003A

003B

003C

003D

003E

003F

0040

0041

0042

0043

0044

0045

%

d

c

d

;

}

d

=

0046

0047

0048

0049

004A

004B

004C

004D

004E

004F

0050

0051

0052

0053

c

+

+

;

表三:

串的索引存储示意图:

串名

串头位置

串长

100

200

300

400

500

600

700

800

900

0000

0007

0009

0013

0018

001F

0026

002C

0042

7

2

9

5

7

7

6

22

2

(二)字符串级的修改

1.字符串的插入操作

例如:

在串名为400的字符串中“b=3;↙”中插入“int□”形成新的字符串“int□b=3;↙”。

此时:

表一:

字符串内容表

100

200

300

400

500

600

700

800

900

mian()

{

inta=5;

intb=3;

c=a+b;

c=m++;

d=c++;

printf(“%d%d%d”,c,d);

}

表二:

字符串在计算机中的存储样式(蓝色表示不能被访问的空间)

0000

0001

0002

0003

0004

0005

0006

0007

0008

0009

000A

000B

000C

000D

m

i

a

n

{

i

n

t

a

000E

000F

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

=

5

b

=

3

;

c

=

a

+

001C

001D

001E

001F

0020

0021

0022

0023

0024

0025

0026

0027

0028

0029

b

;

c

=

m

+

+

;

d

=

c

+

002A

002B

002C

002D

002E

002F

0030

0031

0032

0033

0034

0035

0036

0037

;

p

r

i

n

t

f

%

d

%

d

0038

0039

003A

003B

003C

003D

003E

003F

0040

0041

0042

0043

0044

0045

%

d

c

d

;

}

d

=

0046

0047

0048

0049

004A

004B

004C

004D

004E

004F

0050

0051

0052

0053

c

+

+

;

i

n

t

b

=

3

;

表三:

串的索引存储示意图

串名

串头位置

串长

100

200

300

400

500

600

700

800

900

0000

0007

0009

0013(004B)

0018

001F

0026

002C

0042

7

2

9

5(9)

7

7

6

22

2

2.字符串的删除操作

例如:

在串名为为800的串“printf(“%d%d%d”,c,d);↙”中删除“%d”形成新的串“printf(%d%d”,c,d);↙”。

此时:

表一:

字符串内容表

 

100

200

300

400

500

600

700

800

900

mian()

{

inta=5;

intb=3;

c=a+b;

c=m++;

d=c++;

printf(“%d%d”,c,d);

}

表二:

字符串在计算机中的存储样式(蓝色表示不能被访问的空间)

0000

0001

0002

0003

0004

0005

0006

0007

0008

0009

000A

000B

000C

000D

m

i

a

n

{

i

n

t

a

000E

000F

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

=

5

b

=

3

;

c

=

a

+

001C

001D

001E

001F

0020

0021

0022

0023

0024

0025

0026

0027

0028

0029

b

;

c

=

m

+

+

;

d

=

c

+

002A

002B

002C

002D

002E

002F

0030

0031

0032

0033

0034

0035

0036

0037

;

p

r

i

n

t

f

%

d

%

d

0038

0039

003A

003B

003C

003D

003E

003F

0040

0041

0042

0043

0044

0045

c

d

;

;

}

d

=

0046

0047

0048

0049

004A

004B

004C

004D

004E

004F

0050

0051

0052

0053

c

+

+

;

i

n

t

b

=

3

;

表三:

串的索引存储示意图

串名

串头位置

串长

100

200

300

400

500

600

700

800

900

0000

0007

0009

004B

0018

001F

0026

002C

0042

7

2

9

9

7

7

6

22(20)

2

3.字符串的修改操作

例如:

在串名为100的字符串中“mian()↙”中的“ia”改成“ai”形成新的字符串“main()↙”。

此时:

表一:

字符串内容表

 

100

200

300

400

500

600

700

800

900

main()

{

inta=5;

intb=3;

c=a+b;

c=m++;

d=c++;

printf(“%d%d”,c,d);

}

表二:

字符串在计算机中的存储样式(蓝色表示不能被访问的空间)

0000

0001

0002

0003

0004

0005

0006

0007

0008

0009

000A

000B

000C

000D

m

a

i

n

{

i

n

t

a

000E

000F

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

=

5

b

=

3

;

c

=

a

+

001C

001D

001E

001F

0020

0021

0022

0023

0024

0025

0026

0027

0028

0029

b

;

c

=

m

+

+

;

d

=

c

+

002A

002B

002C

002D

002E

002F

0030

0031

0032

0033

0034

0035

0036

0037

;

p

r

i

n

t

f

%

d

%

d

0038

0039

003A

003B

003C

003D

003E

003F

0040

0041

0042

0043

0044

0045

c

d

;

;

}

d

=

0046

0047

0048

0049

004A

004B

004C

004D

004E

004F

0050

0051

0052

0053

c

+

+

;

i

n

t

b

=

3

;

 

表三:

串的索引存储示意图

串名

串头位置

串长

100

200

300

400

500

600

700

800

900

0000

0007

0009

004B

0018

001F

0026

002C

0042

7

2

9

9

7

7

6

20

2

(三)行级的操作

1.插入行操作

例如:

在串名为400的行后面插入新的字符串“int□c,d;↙”,此时命名为450,则有:

表一:

字符串内容表

 

100

200

300

400

450

500

600

700

800

900

main()

{

inta=5;

intb=3;

intc,d;

c=a+b;

c=m++;

d=c++;

printf(“%d%d”,c,d);

}

表二:

字符串在计算机中的存储样式(蓝色表示不能被访问的空间)

0000

0001

0002

0003

0004

0005

0006

0007

0008

0009

000A

000B

000C

000D

m

a

i

n

{

i

n

t

a

000E

000F

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

=

5

b

=

3

;

c

=

a

+

001C

001D

001E

001F

0020

0021

0022

0023

0024

0025

0026

0027

0028

0029

b

;

c

=

m

+

+

;

d

=

c

+

002A

002B

002C

002D

002E

002F

0030

0031

0032

0033

0034

0035

0036

0037

;

p

r

i

n

t

f

%

d

%

d

0038

0039

003A

003B

003C

003D

003E

003F

0040

0041

0042

0043

0044

0045

c

d

;

;

}

d

=

0046

0047

0048

0049

004A

004B

004C

004D

004E

004F

0050

0051

00

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

当前位置:首页 > 成人教育 > 电大

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

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