文章
2
粉丝
0
获赞
0
访问
961
/*
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)){//现在长度一致,判断是否两个数据一致,并且判断...
登录后发布评论
暂无评论,来抢沙发