记录关键字字符串的比较


最近在研究字典树数据结构,发现双链键树的同一层结点的关键字符必须有序,否则在插入结点时会失败,在项目中,许多字符串都是未经处理的,没有排好序的,于是为了查找字符串快速,方便,用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树了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值