共谋节点两个单列表

题目:输入两个单链表。找出公共结点。

思路:若两个单链表有公共结点。其形状必然为“Y”型,也就是说公共结点后的全部结点都是同样的。

我们首先获得两个链表的长度。求得长度之差为n,再定义两个指针分别指向两个链表首部,长链表先走n步,然后两个指针同一时候走,直到两个指针所指向的值全然同样时停止。

代码:
/*
求链表公共结点
*/
#include<stdio.h>
#include<stdlib.h>
typedef struct _NODE_
{int data;struct _NODE_ *next;
}Node,*pNode;
int get_length(pNode list)
{if(list == NULL){return 0;}int len = 0;pNode pTemp = list;while(pTemp != NULL){len++;pTemp = pTemp->next;}return len;
}
void create(pNode *list,int n)
{if(n <= 0){return;}*list = (pNode)malloc(sizeof(Node));if(!list){exit(-1);}int data;scanf("%d",&data);(*list)->data = data;(*list)->next = NULL;pNode pTemp = *list;for(int i = 0; i < n-1; i++){scanf("%d",&data);pNode pNew = (pNode)malloc(sizeof(Node));if(!pNew){exit(-1);}pNew->data = data;pNew->next = NULL;pTemp->next = pNew;pTemp = pNew;}
}
//求单链表公共结点
pNode FindCommonNode(pNode list1,pNode list2)
{if(list1 == NULL || list2 == NULL){return NULL;}int len1 = get_length(list1);int len2 = get_length(list2);int dif = len1 - len2;pNode pLong = list1;pNode pShort = list2;if(dif < 0){pLong = list2;pShort = list1;dif = len2-len1;}while(dif > 0){pLong = pLong->next;dif--;}while(pLong != NULL && pShort != NULL && pLong != pShort){pLong = pLong->next;pShort = pShort->next;}return pLong;
}
void Destroy(pNode *list)
{if(*list == NULL){return;}pNode p = *list,q;while(p != NULL){q = p->next;free(p);p = q;}
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/gcczhongduan/p/4646122.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bzero, memset ,setmem 区别

From: http://blog.csdn.net/agathe/article/details/6066157 bzero 原型&#xff1a; extern void bzero(void *s, int n);用法&#xff1a; #include <string.h>功能&#xff1a;置字节字符串s的前n个字节为零。 说明&#xff1a;bzero无返回值。 举例&am…

OPENCV2.2移植说明

OPENCV2.2移植说明 系统&#xff1a;Ubuntu10.10  编译OPENCV2.2 reference URL: http://opencv.willowgarage.com/wiki/InstallGuide  安装库&#xff1a; apt-get install build-essential cmake pkg-config libpng12-0 libpng12-dev libpng-dev li…

前端问题记录1:debounce is not a function

目录 项目场景&#xff1a; 问题描述&#xff1a; 原因分析&#xff1a; 解决方案&#xff1a; 项目场景&#xff1a; 问题描述&#xff1a; 原因分析&#xff1a; 变量重名 解决方案&#xff1a; 变量重名 关注我 一起进入前端学习群 谢谢

计算机word求差函数,表格里怎么自动求差/怎样在word2010表格中求差

如何在Excel表格中求差你这15分貌似很好赚啊怎样在word2010表格中求差一步&#xff1a;打开Excel&#xff0c;单击第一排&#xff0c;第三个“格”&#xff0c;也就C1&#xff0c;在C1中输入“A1-B1”&#xff1b;第二步&#xff1a;这个公式的意思就是说&#xff1a;A1-B1C1&a…

Linux 使用fcntl c_cc[VMIN] c_cc[CTIME]设置串口阻塞与非阻塞读取数据

一、概述 Linux串口非常灵活&#xff0c;可以根据需要配置成标准串口和自定义串口模式&#xff0c;就Linux 串口读取数据来说&#xff0c;有有两种主要方式&#xff1a;阻塞与非阻塞。 阻塞&#xff1a;一直等待数据&#xff0c;直到退出条件成立&#xff1b;非阻塞&#xff…

CSS3选择器(二)--表单

:enabled 选择可用状态的表单元素 :disabled 选择不可用状态的表单元素 :checked 复选框、单选框选中状态的选项 ::selection 用来匹配突出显示的文本(用鼠标选择文本时的文本)。 :read-only 用来指定处于只读状态元素的样式.即元素中设置了“readonly’readonly’” :read…

Linux Shell 通配符、元字符、转义符使用实例介绍

From: http://www.cnblogs.com/chengmo/archive/2010/10/17/1853344.html 说到shell通配符&#xff08;wildcard&#xff09;&#xff0c;大家在使用时候会经常用到。下面是一个实例&#xff1a; ?1?1234[chengmolocalhost ~/shell]$ lsa.txt b.txt c.old#2?1234[chengmo…

ant design model实现图片预览

代码部分 <divgutter{16}style{{width: 100%,display: flex,justifyContent: space-between,flexWrap: wrap ,}}>{detailMsg.imgList &&detailMsg.imgList.map((item, index) > (<div style{{ width: 30% }} key{index} onClick{() > this.handleClick(…

VMware Workstation Pro 无法在Windows 上运行的 解决办法

一、问题描述 国庆期间window10来了一次更新&#xff0c;导致VMware Workstation 无法在windows上运行&#xff0c;我的虚拟机版本是VMware Pro14。有两种方法解决该问题&#xff0c;第一种是直接卸载新安装的windows安装包&#xff0c;然后重启。第二种方式是升级VMware到最新…

机器学习之深度学习

本文基于台大机器学习技法系列课程进行的笔记总结。 一、主要内容 topic 1 深度神经网络结构 从类神经网络结构中我们已经发现了神经网络中的每一层实际上都是对前一层进行的特征转换&#xff0c;也就是特征抽取。一般的隐藏层&#xff08;hidden layer&#xff09;较少的类神…

sockaddr和sockaddr_in的区别

From: http://www.it165.net/pro/html/201211/4066.html 初学者很容易对二者有困惑的感觉&#xff0c;下面来讲一下二者的区别。 sockaddr是在头文件 /usr/include/bits/socket.h 中定义的&#xff0c;如下&#xff1a; view sourceprint?1.struct sockaddr2.{3.__SOCKADDR_C…

[react] 什么时候使用状态管理器?

[react] 什么时候使用状态管理器&#xff1f; 1用户的使用方式复杂 2.不同身份的用户有不同的使用方式&#xff08;比如普通用户和管理员&#xff09; 3.多个用户之间可以协作 4.与服务器大量交互&#xff0c;或者使用了WebSocket 5.View要从多个来源获取数据 从组件角度看 1.…

FlexViewer2.3中拉帘Widget下载

http://www.giser.net/?p280 由于最新的ArcGIS API for flex2.x使用了Flex SDK4&#xff0c;因此造成了对之前ArcGIS API for flex1.x制 作的拉帘Widget无法使用&#xff0c;因此重新制作了拉帘工具供大家使用。 下载地址&#xff1a; Swipe 使用方法&#xff1a;将下载后的sw…

scanf sscanf 的用法

一、scanf函数 scanf() - 以屏幕(stdin)为输入源&#xff0c;提取输入指定格式的数据&#xff0c;返回提取的数据个数。 函数原型:int scanf( const char *format [,argument]... ); 二、sscanf函数 sscanf() - 从一个字符串中读进与指定格式相符的数据&#xff0c;非常适合…

spring ioc原理

IOC&#xff08;DI&#xff09;&#xff1a;java程序员都知道&#xff1a;java程序中的每个业务逻辑 至少需要两个或以上的对象来协作完成&#xff0c;通常&#xff0c;每个对象在使用他的合作对象时&#xff0c;自己均要使用像new object&#xff08;&#xff09; 这样的语法来…

五种I/O 模式——阻塞(默认IO模式),非阻塞(常用语管道),I/O多路复用(IO多路复用的应用场景),信号I/O,异步I/O

From: http://blog.163.com/xychenbaihuyeah/blog/static/13222965520112163171778/ 五种I/O 模式&#xff1a; 【1】 阻塞 I/O (Linux下的I/O操作默认是阻塞I/O&#xff0c;即open和socket创建的I/O都是阻塞I/O) 【2】 非阻塞 I/O (可以通过f…

【hive】Hive中的大宽表及其底层详细技术点

简介: 在大数据环境中&#xff0c;处理大规模数据集是常见的需求。为了满足这种需求&#xff0c;Hive引入了大宽表&#xff08;Large Wide Table&#xff09;的概念&#xff0c;它是一种在Hive中管理和处理大量列的数据表格。本文将详细介绍Hive中的大宽表概念以及其底层的详细…

[react] render函数中return如果没有使用()会有什么问题?

[react] render函数中return如果没有使用()会有什么问题&#xff1f; 我们在使用JSX语法书写react代码时&#xff0c;babel会将JSX语法编译成js&#xff0c;同时会在每行自动添加分号&#xff08;&#xff1b;&#xff09;&#xff0c;如果return后换行了&#xff0c;那么就会…

小程序tabbar文字在服务器上不显示,小程序的tabbar不显示

1. tabbar 不显示刚开始给页面加tabbar时{"pages":["pages/index/index","pages/all/all","pages/relax/relax","pages/me/me","pages/wen/wen","pages/logs/logs"],"window":{"backgro…

Linux fprintf的用法

一、fprintf 函数描述 fprintf其作用是格式化打印&#xff0c;也叫格式化输出&#xff0c;可以指定输出到一个流文件中&#xff0c;即相输出流中写入数据。fprintf()函数根据指定的格式(format)&#xff0c;向输出流(stream)写入数据(argument)。fprintf( )会根据参数format 字…