串的顺序表实现(C语言)

#include <stdio.h>
#define M 255
typedef struct node{
	char data[M];
	int length;
}SString;
void Init_Str(SString &str){
	str.data[0]='\0';
	str.length=0;
} 
int strlen(char s[]){     //利用局部变量的返回
	int i=0;
	while(s[i]!='\0'){
		i++;
	}
	return i+1;
}
void StrAssign(SString &str,char s[]){     //串赋值 
	for(int i=0;i<strlen(s);i++){
		str.data[i]=s[i];
	}
	str.length=strlen(s); 
}
bool StrCopy(SString &str,SString T){     //串拷贝 
	if(T.length==0){
		return false;
	} 
	for(int i=0;i<T.length;i++){
		str.data[i]=T.data[i];
	}
	str.length=T.length;      //修改后长度也要改变 
	return true;
} 
int StrCompare(SString str,SString T){
	//串大小比较规则:首先比较每个位置上的字母,如果每个位置均相同才比较长度 
	for(int i=0;i<str.length-1 && i<T.length-1;i++){
		if(str.data[i]<T.data[i]){
			return -1;
		}
		if(str.data[i]>T.data[i]){
			return 1;
		}
	}
	if(str.length<T.length){
		return -1;
	}
	if(str.length==T.length){
		return 0;
	}
	if(str.length>T.length){
		return 1;
	}
}
bool Concat(SString &str,SString s){       //串拼接直接接到末尾 
	if(str.length+s.length>M){
		return false;
	}
	int j=0;
	for(int i=str.length-1;i<str.length+s.length-1;i++){
		str.data[i]=s.data[j];
		j++;
	}
	str.length=str.length+s.length-1;
	return true;
}
SString SubString(SString &Sub,SString S,int pos,int len){    //将S中从pos开始的长度为len的子串截取出来 
	if(pos<0 || pos>S.length || pos+len>S.length){
		return Sub;
	}
	Sub.length=len;
	for(int i=pos-1;i<pos+len-1;i++){
		Sub.data[i]=S.data[i];
	}
	return Sub;
} 
bool EmptyStr(SString str){     //判断串是否非空 
	if(str.length==0){
		return true;
	}
	return false;
}
void test(){
	SString s,t,h;
	Init_Str(s);
	Init_Str(t);
	Init_Str(h);
	char ch[20]="bbbbb";
	char ch1[8]="bbb";
	StrAssign(s,ch);
	puts(s.data);
	StrAssign(t,ch1);
	puts(t.data);
	SubString(h,s,1,6);
	puts(h.data);
	/*
	StrCopy(s,t);
	puts(s.data);*/
/*	Concat(s,t); 
	puts(s.data);*/
	//printf("%d %d",StrCompare(s,t));
} 
int main(){
	test();
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值