串的堆分配存储c语言,串 堆分配存储 数据结构 C语言 严蔚敏

头文件

typedef struct{

char *ch;

int length;

}HString;

#define MAXSTRLEN 255

#define OK 1

#include#include#define TRUE 1

#define FALSE 0

#define ERROR 0

#define OVERFLOW -2

#includeusing namespace std;

typedef int Status;

Status StrAssign(HString &T,char *chars);

Status SubString(HString &Sub,HString S,int pos,int len);

Status Concat(HString &T,HString S1,HString S2);

Status StrPrint(HString S);

void InitalStr(HString &T);

函数

#include "com.h"

//初始化一个串

void InitalStr(HString &T){

T.ch = NULL;

T.length = 0;

}

Status Concat(HString &T,HString S1,HString S2){

int i;

if(T.ch)

free(T.ch);

if(!(T.ch=(char*)malloc((S1.length+S2.length)*sizeof(char))))

exit(OVERFLOW);

for(i=0;iS.length||len<0||len>S.length-pos+1)

return ERROR;

if(Sub.ch) free(Sub.ch);

if(!len) //长度为0,就全部置为0

{

Sub.ch=NULL;

Sub.length=0;

}

else{

Sub.ch=(char *)malloc(len*sizeof(char)); //分配空间

if(!Sub.ch) exit(OVERFLOW);

for(i=0;i

主函数

#include "com.h"

int main(){

int ch;

int q=1,len,pos;

char a[MAXSTRLEN],b[MAXSTRLEN];

HString S1,S2,T,Sub;

InitalStr(T);

InitalStr(S1);

InitalStr(S2);

InitalStr(Sub);

cout << "请输入主串S1" << endl;

cin >> a ;

StrAssign(S1, a);

cout<>ch;

switch(ch){

case 1:

cout << "请输入要和主串S1连接的S2" << endl;

cin >> b;

StrAssign(S2, b);

if (Concat(T,S1,S2))

{

cout<> pos>> len;

if (SubString(Sub,S1,pos,len))

{

cout << "输出子串Sub:";

StrPrint(Sub);

}

else

cout << "求子串失败!" << endl;

break;

default:q=0;break;

}

}return 0;

}

结果

958e9b8f129146dd9466df66158be5d4.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值