论文网
English Papers
万事OK网
发表论文
 
 首页 > IT文章 > 程序设计 >
拷贝链表的O(n)算法

[科技论文网] http://www.scipapers.com    2007-12-01  

    拷贝链表的O(n)算法

    如结构:

    struct List

    {

        struct List* data;

        struct List* next;

    };

    其中next为下一个节点,data指向链表中的随机一个节点。

    实现拷贝函数:

    struct List * CopyList(struct List* head)

    {

    }

    要求返回一个新的链表,注意:1、新链表中节点的data指向新链表中对应节点,而
    非原链表中对应节点。2、不能用缓存(如数组等),可用临时变量。3、必须为O(n)                                          

    #include <stdlib.h>

    struct node_t
    {
            node_t 
    * data;
            node_t 
    * next;
    }
    ;

    node_t 
    * copy_list(node_t * list)
    {
            
    if(list==NULL) return NULL;
               //假设原p链为 p1 p2 p3..............

            
    for(node_t * p=list; p!=NULL; p=p->next->next)
            
    {
                       //新生成一条q链,暂时混插在p链中
                       // 变成 p1 q1 p2 q2 p3 q3 .....................
                    node_t 
    * q=new node_t;
                    q
    ->next=p->next;
                    p
    ->next=q;
            }


            
    for(node_t * p=list; p!=NULL; p=p->next->next)
            
    {//设置q链中节点q1.......qn中的data
                    p
    ->next->data=p->data->next;
            }


            node_t 
    * head=list->next;
            node_t 
    * p=list;
            node_t 
    * q=list->next;

            
    while(q->next!=NULL)
            
    {
                        //把p链和q链分离
                    p
    ->next=q->next;
                    p
    =p->next;
                    q
    ->next=p->next;
                    q
    =q->next;
            }

            p
    ->next=NULL;

            
    return head;
    }
                                                           
        来源:

声明:本文由网友推荐或作者提交,版权归原作者所有,刊登此文仅为传播知识,展示研究成果,提高文章引用率。未经原作者授权,禁止用于任何形式的商业行为。科技论文网倡导尊重知识、尊重劳动、保护原创、知识共享。由于部分论文文章来于网络,文章作者不祥,请相关的原创作者与我们联系,以便加上您的署名。

  
拷贝链表的O(n)算法
下面没有链接了     Prim算法完整实现代码
最新论文
·[程序设计]拷贝链表的O(n)算法
·[程序设计]Prim算法完整实现代码
·[程序设计]矩阵旋转算法的实现
·[程序设计]格雷码算法C源码
·[程序设计]凸壳串行算法
·[程序设计]常用算法设计方法:贪婪法
·[程序设计]递归实现数组元素相乘
·[程序设计]地图着色算法C语言实现
·[程序设计]链式实现的堆栈
·[程序设计]简单的遗传算法源代码
 
 

搜索论文

Google
论文分类

论文网 论文发表网 论文 免费论文网 找论文网 毕业论文 中国论文网 英语论文 百度论文 聘教网 易搜
 免费发布论文    中国论文网 2008版权所有  业务联系:pinjiao@126.com