zoukankan      html  css  js  c++  java
  • 共谋节点两个单列表

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

    思路:若两个单链表有公共结点。其形状必然为“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;
    	}
    }

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

  • 相关阅读:
    Mybatis分页插件
    Mybatis代码自动生成
    Spring-Mybatis依赖
    Spring-test单元测试
    Spring-json依赖
    Spring-MVC依赖
    Log4j日志依赖
    Spring数据库连接池依赖
    Spring-JDBC依赖
    Spring依赖
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4646122.html
Copyright © 2011-2022 走看看