最近在研究字典树数据结构,发现双链键树的同一层结点的关键字符必须有序,否则在插入结点时会失败,在项目中,许多字符串都是未经处理的,没有排好序的,于是为了查找字符串快速,方便,用trie树或者双链键树搜索比较快,为了使字符串有序,必须得进行排序,于是定义了如下数据结构:
/关键字类型
struct KeyType{
char ch[MAX_KEY_LEN];//存储关键子串
int num;//关键子串长度
};
struct Others{//其他记录的类型,比如为整形,可能还有其他更加复杂的数据结构类型
int order;
};
//查找的记录封转关键字类型
struct Record{
KeyType K;查找记录的关键字类型
Others other;其他类型
};
char*s[6] = {
"bcda", "abcd", "huyufei", "lixu", "chenao", "xy"
};
int i;
Record r[6] = {};//申明记录数组为5个
for (i = 0; i < 6; i++){
strcpy(r[i].K.ch, s[i]);//给记录赋值
}
int j;
for (i = 0; i < 6; i++){
for (j = i + 1; j < 6; j++){
if (strcmp(r[i].K.ch, r[j].K.ch) > 0){
Record t = r[i];
r[i] = r[j];
r[j] = t;
}
}
}
for (int i = 0; i < 6; i++){
printf("%s \n", r[i].K.ch);
}
这样发现这些字符串都变了有序的,于是就可以好建立字典树和trie树了。