데이터 구조 - 문자열 의 정의, 저장 구조 와 기본 작업
                                            
 18893 단어  데이터 구조
                    
직렬 저장 구조
고정 순차 저장:
//       
typedef struct 
{
	char str[maxSize+1];	//       maxSize,           '\0'      
	int length;
}Str;
길이 변환 할당 저장 소:
//       
typedef struct 
{
	char *ch;	//                 
	int length;
}Str;
문자열 의 기본 동작
할당 조작
//     :           str,        1,    0
int strCopy(Str &str,char *ch)
{
	if(str.ch)
		free(str.ch);	//   str   ,       (  )
	int len=0;
	char *c=ch;	//       c    ch
	while(*c)	//      ,      
	{
		c++;
		len++;
	}
	if(len==0)
	{
		str.ch=NULL;
		str.length=0;
		return 1;
	}
	else{
		str.ch=(char*)malloc(sizeof(char)*(len+1));	//          '\0'
		if(str.ch==NULL)
			return 0;
		else{
			c=ch;
			int i=0;
			for(i=0;i<=len;i++)
			{
				str.ch[i]=*c;
				c++;
			}
			str.length=len;
			return 1;
		}
	}
}
문자열 길이 가 져 오기
//       
int strLength(Str str)
{
	return str.length;
}
직렬 비교 조작
//      
int strCompare(Str s1,Str s2)
{
	int i=0;
	for(i=0;i<s1.length&&i<s2.length;i++)
	{
		if(s1.ch[i]!=s2.ch[i])	//           ,        
			return s1.ch[i]-s2.ch[i];
	}
	return s1.length-s2.length;	//       ,              ,    
}
직렬 연결 조작
// 	     
Str strConcat(Str s1,Str s2)
{
	Str str;
	str.ch=(char *)malloc(sizeof(char)*(s1.length+s2.length+1));
	str.length=s1.length+s2.length;
	int i=0;
	for(i=0;i<s1.length;i++)
	{
		str.ch[i]=s1.ch[i];
	}
	int j=0;
	for(j=0;j<=s2.length;j++)	//   s2.ch    '\0'    
	{
		str.ch[j]=s1.ch[j];
	}
	return str;
}
직렬 비우 기 동작
//      
int strClean(Str &s1)
{
	if(s1.ch)
	{
		free(s1.ch);
		str.ch=NULL;
	}
	str.length=0;
	return 1;
}
서브 스 트 링 조작
//      : s1 pos    ,   len   
Str subString(Str s1,int pos,int len)
{
	if(pos<0||len<0||pos>=s1.length||len>str.length-pos)	//         
		return 0;
	Str str;
	if(len==0)
	{
		str.ch=NULL;
		str.length=0
		return 1;
	}
	else
	{
		str.ch=(char*)malloc(sizeof(char)*(len+1));
		int i=0;
		for(i=0;i<len;i++)
		{
			str.ch[i]=s1.ch[i+pos];
		}
		str.ch[i]='\0';
		str.length=0;
		return 1;
	}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.