zoukankan      html  css  js  c++  java
  • 拆分单链表

    */
     * Copyright (c) 2016,烟台大学计算机与控制工程学院
     * All rights reserved.
     * 文件名:text.html
     * 作者:常轩
     * 微信公众号:Worldhello
     * 完成日期:2016年11月16日
     * 版本号:V1.0
     * 程序输入:无
     * 程序输出:见运行结果
     */
    
    //有一个带头结点的单链表L={a1,b1,a2,b2,.....,an,bn},设计一个算法将其拆分成两个带头节点的单链表L1,L2,L1={a1,a2,....}L2={b1,b2,...}
    #include<stdio.h>
    #include<stdlib.h>
    typedef int ElemType;
    typedef struct LNode{
    	ElemType data;
    	struct LNode *next;
    }LinkList;
    
    
    void CreateListF(LinkList * &L,ElemType a[],int n)         //头插法创建链表
    {
    	LinkList * s;
    	int i;
    	L=(LinkList *)malloc(sizeof(LinkList));
    	L->next=NULL;                                          //创建头结点,其next域为空
    	for(i=0;i<n;i++)                                       //循环建立数据节点
    	{
    		s=(LinkList *)malloc(sizeof(LinkList));
    		s->data=a[i];                                      //创建数据节点*s
    		s->next=L->next;                                   //将*s插在原开始节点之前头开始节点之后
    		L->next=s;
    	}
    }
    
    
    void split(LinkList * &L,LinkList * &L1,LinkList *&L2)
    {
    	LinkList *p=L->next,*q,*r1;//p指向第一个数据节点
    	L1=L;                      //L1指向原来L的头结点
    	r1=L1;                     //r1始终指向L1的尾节点
    	L2=(LinkList *)malloc(sizeof(LinkList));//创建L2的头结点
    	L2->next=NULL;             //置L2的指针域为NULL
        while(p!=NULL)
    	{
    		r1->next=p;            //采用尾插法将*p(data值为a1)插入L1中
    		r1=p;
    		p=p->next;             //p移向下一个节点(data值为b1)
    		q=p->next;             //由于
    		p->next=L2->next;
    		L2->next=p;
    		p=q;
    	}
    	r1->next=NULL;
    }
    void DispList(LinkList * L)
    {
    	LinkList *p=L->next;
    	while(p!=NULL)
    	{
    		printf("%d ",p->data);
    		p=p->next;
    	}
        printf("
    ");
    }
    int main()
    {
    	LinkList * L,*L1,*L2;
    	ElemType a[6]={1,2,3,4,5,6};
        CreateListF(L,a,6);
    	DispList(L);
    	split(L,L1,L2);
    	DispList(L1);
    	DispList(L2);
    }
    
    

  • 相关阅读:
    HDU1287+枚举
    HDU1303+水
    HDU1286+线性筛素数
    HDU1293+Java+大整数
    POJ1992+简单DP
    三种Cache写入方式原理简介
    Hadoop分布式文件系统:架构和设计要点 转
    GFS, HDFS, Blob File System架构对比转
    python
    Cassandra,Mongodb,CouchDB,Redis,Riak,HBase比较转
  • 原文地址:https://www.cnblogs.com/chxuan/p/8232124.html
Copyright © 2011-2022 走看看