串的索引存储.docx
- 文档编号:10908601
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:16
- 大小:19.29KB
串的索引存储.docx
《串的索引存储.docx》由会员分享,可在线阅读,更多相关《串的索引存储.docx(16页珍藏版)》请在冰豆网上搜索。
串的索引存储
串的索引存储
一.串修改的原则:
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 索引 存储