描述:输入两个链表,找出他们的第一个公共结点
思路:
1.初始化堆栈s1,s2
2.把数据压入s1,s2
3.使用while循环同步出栈,当s1和s2所出栈的数据不相同时,上一个即使公共结点
author : llq
date:2019/8/6
代码如下:
#include<stdio.h>
#include<malloc.h>
#include"stack.h"
main(){
stack s1 ,s2;
int data;
//初始化两个堆栈
inistack(&s1);
inistack(&s2);
printf("请输入第一个链表的数据(以0结束):\n");
scanf("%d",&data);
while(data!=0){
push(&s1,data);
scanf("%d",&data);
}
printf("请输入第二个链表的数据(以0结束):\n");
scanf("%d",&data);
while(data!=0){
push(&s2,data);
scanf("%d",&data);
}
int x=0; //定义公共结点
while(!stackempty(&s1)&&!stackempty(&s2)){
if(gettop(&s1)==gettop(&s2))
x=gettop(&s1);
else
break;
pop(&s1);
pop(&s2);
}
printf("公共结点为:%d\n(若输出为0,则表示无公共结点)",x);
}
结果如下图所示: