文章

2

粉丝

0

获赞

0

访问

961

头像
2012年计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年9月20日 20:20
阅读数 531

/*
1.本题给出两个单词拥有共同后缀,用链式存储方式存起来
2.可以先获取两个链表的长度
3.将长的往后先移动,保证两个链表长度逻辑上一致
4.开始同步移动指针,比对两个指针指向的元素是否相同,相同就将其保存到一个新的指针里面,返回。
*/
typedef struct Node{
	char data;
	struct Node *next;
}node,*Linklist;  // = struct Node* = Linklist
node* search(Linklist L1,Linklist L2){
	node* m = L1;node* n = L2;node *p=NULL;//存储共同后缀起始位置
	node *str1 = m->next;//头节点的下一个节点
	node *str2 = n->next;//头节点的下一个节点
	int length1 = 0;int length2 = 0;
	while(str1!=NULL){//获取链表1的长度
		length1++;
		str1 = str1->next;
	}
	while(str2!=NULL){//获取链表2的长度
		length2++;
		str2 = str2->next;
	}
	str1 = m->next;//头节点的下一个节点,恢复
	str2 = n->next;//头节点的下一个节点,恢复
	int gap_length = 0;
	if(length1>length2){//比较谁大,大的就移动指针,指针移动长度为差值长度
		gap_length = length1 - length2;
		for(int i = 0;i<gap_length;i++)str1 = str1->next;
	}else{
		gap_length = length2 - length1;
		for(int i = 0;i<gap_length;i++)str2 = str2->next;
	}
	while((str1!=NULL&&str2!=NULL)){//现在长度一致,判断是否两个数据一致,并且判断...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发