复习笔记 数据结构 第四章 串
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define maxSize 20
#define ERROR -1
using namespace std;
typedef struct
{
char data[maxSize];
int length;
}str1;
typedef struct
{
char *ch;
int length;
}Str;
int cmp(Str s1,Str s2)
{
for (int 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;
}
int strassign(Str &str,char *ch)
{
if (str.ch)
free(ch);
int i = 1;
int len_ch=0;
while (ch[i]!='\0')
{
len_ch ++;
i++;
}
if (len_ch == 0)
{
str.length = 0;
str.ch = NULL;
return 1;
}
str.ch = (char *)malloc((len_ch+1)*sizeof(char));
if (str.ch == NULL)
return 0;
for (int i=0;i<=len_ch;i++)
{
str.ch[i] = ch[i];
}
str.length = len_ch ;
return 1;
}
int strconcat(Str &str,Str str1,Str str2)
{
int len = str1.length + str2.length ;
if (str.ch)
free(str1.ch);
str.ch = (char *)malloc(sizeof(char)*(len+1));
int i=0;
while (str1.length -- )
{
str.ch[i] = str1.ch[i];i++;
}
int j=0;
while (str2.length --)
{
str.ch[i+j] = str2.ch[j];j++;
}
str.ch[i+j+1] = '\0';
str.length = str1.length + str2.length;
return 1;
}
int substring(Str &substr,Str str,int pos,int len)
{
if (pos < 0 || pos >str.length || len <0 || len > str.length-pos)
return 0;
if (substr.ch)
free(substr.ch);
if (len == 0)
{
substr.ch = NULL;
substr.length = 0;
return 1;
}
substr.ch = (char *)malloc(sizeof(char)*len);
int i=0;
while (len--)
{
substr.ch[i] = str.ch[pos];
i++;pos++;
}
substr.ch[i] = '\0';
substr.length = len;
return 1;
}
int main()
{
return 0;
}