因为串是特殊的线性表 故其存储结构与线性表的存储结构类似 只不过由于组成串的结点是单个字符 所以存储时有一些特殊的技巧
串的顺序存储
顺序串 串的顺序存储结构简称为顺序串 与顺序表类似 顺序串是用一组地址连续的存储单元来存储串中的字符序列 因此可用高级语言的字符数组来实现 按其存储分配的不同可将顺序串分为如下两类 ( )静态存储分配的顺序串( )动态存储分配的顺序串
静态存储分配的顺序串 ( )直接使用定长的字符数组来定义该种方法顺序串的具体描述 #define MaxStrSize //该值依赖于应用 由用户定义 typedef char SeqString[MaxStrSize]; //SeqString是顺序串类型 SeqString S; //S是一个可容纳 个字符的顺序串 注意 ①串值空间的大小在编译时刻就已确定 是静态的 难以适应插入 链接等 *** 作②直接使用定长的字符数组存放串内容外 一般可使用一个不会出现在串中的特殊字符放在串值的末尾来表示串的结束 所以串空间最大值为MaxStrSize时 最多只能放MaxStrSize 个字符 例C语言中以字符 \ 表示串值的终结 ( )类似顺序表的定义直接使用定长的字符数组存放串内容外 可用一个整数来表示串的长度 此时顺序串的类型定义完全和顺序表类似 typedef struct{ char ch[MaxStrSize]; //可容纳 个字符 并依次存储在ch[ n]中 int length; }SeqString;
注意 ①串的长度减 的位置就是串值的最后一个字符的位置 ②这种表示的优点是涉及串长的 *** 作速度快
动态存储分配的顺序串 顺序串的字符数组空间可使用C语言的malloc和free等动态存储管理函数 来根据实际需要动态地分配和释放 这样定义的顺序串类型亦有两种形式 ( )较简单的定义 typedef char string; //C中的串库<string h>相当于使用此类型定义串
lishixinzhi/Article/program/sjjg/201311/22631
不知道你要什么语言的代码告诉你思路
1 定义字符串两个A,B;
2定义一个存放这两个字符串的变量S;
3将要合并的两个字串A,B存进S;
4用FOR循环比较字串中的每个字符ASCII码大小重新排序;
for(int i=0;i<=S串长度;i++)
for(int j=0;j<=i;j++)
if S[i]<S[j]
将S[i]和S[j]换位
5输出;
这个程序符合需求,你运行一下
/ Note:Your choice is C IDE /
#include "stdioh"
void main()
{
char a[100],ch;
char b[100]={0};
int i=0,j=0;
gets(a);
printf("please input the letter you want to delete:\n");
scanf("%c",&ch);
while((a+i)!='\0')
{
if((a+i)!=ch)
{
(b+j)=(a+i);
i++;
j++;
}
else
{
i++;
}
}
(b+i)='\0';
puts(b);
}
那是因为命令行中遇到空格就会以为字符串被断开,从而作为成为两个参数而不是一个
在命令行中需要把完整的一句(中间有空格)用""括起来就可以解决
在java中用RuntimegetRuntime()exec(),则把被空格分开的一个参数(你这里是路径和文件名)
用/" /"括起来
如:RuntimegetRuntime()exec("abc /"c://xyz sv//aa bbexe/" ");
或者用ProcessBuilder的command()方法配合ArrayList来解决
如:
List<String> commend=new javautilArrayList<String>();
commendadd("abc");
commendadd("c://xyz sv//aa bbexe");
ProcessBuilder builder = new ProcessBuilder();
buildercommand(commend);
builderstart();
因为串是特殊的线性表 故其存储结构与线性表的存储结构类似 只不过由于组成串的结点是单个字符 所以存储时有一些特殊的技巧
串的顺序存储
顺序串
串的顺序存储结构简称为顺序串
与顺序表类似 顺序串是用一组地址连续的存储单元来存储串中的字符序列 因此可用高级语言的字符数组来实现 按其存储分
配的不同可将顺序串分为如下两类
( )静态存储分配的顺序串
( )动态存储分配的顺序串
静态存储分配的顺序串
( )直接使用定长的字符数组来定义
该种方法顺序串的具体描述
#define MaxStrSize //该值依赖于应用 由用户定义
typedef char SeqString[MaxStrSize]; //SeqString是顺序串类型
SeqString S; //S是一个可容纳 个字符的顺序串
注意
①串值空间的大小在编译时刻就已确定 是静态的 难以适应插入 链接等 *** 作
②直接使用定长的字符数组存放串内容外 一般可使用一个不会出现在串中的特殊字符放在串值的末尾来表示串的结束 所以串空间
最大值为MaxStrSize时 最多只能放MaxStrSize 个字符
例C语言中以字符 \ 表示串值的终结
( )类似顺序表的定义
直接使用定长的字符数组存放串内容外 可用一个整数来表示串的长度 此时顺序串的类型定义完全和顺序表类似
typedef struct{
char ch[MaxStrSize]; //可容纳 个字符 并依次存储在ch[ n]中
int length;
}SeqString;
注意
①串的长度减 的位置就是串值的最后一个字符的位置
②这种表示的优点是涉及串长的 *** 作速度快
动态存储分配的顺序串
顺序串的字符数组空间可使用C语言的malloc和free等动态存储管理函数 来根据实际需要动态地分配和释放
这样定义的顺序串类型亦有两种形式
( )较简单的定义
typedef char string; //C中的串库 相当于使用此类型定义串
( )复杂定义
typedef struct{
char ch;// 若串非空 则按实际的串长分配存储区 否则ch为NULL
int length;
}HString;
串的顺序存储 *** 作
lishixinzhi/Article/program/sjjg/201311/23914
以上就是关于串的顺序存储全部的内容,包括:串的顺序存储、编程:两个字符串连接程序,要求将两个字符串的字符连接后按字母顺序排序、急求程序设计问题: 采用顺序存储存储串,输入一个字符串r,删除r中所有值等于ch的字符。(需详细解读等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)