Responsive image

问题 2936 --设计一个算法将一个带头结点单链表拆分成两个带头结点的单链表

2936: 设计一个算法将一个带头结点单链表拆分成两个带头结点的单链表

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 0
[提交][状态][讨论版][命题人:]

题目描述

有一个带头结点的单链表 L=(a1,b1,a2,b2,…,an,bn),设计一个算法将其拆分成两个带头结点的单链表L1和L2,其中L1=(a1,a2,…,an),L2=(bn,bn-1,….,b1),要求L1使用L的头结点。
组合提交代码(仅支持C++)
#include<iostream>
#include <stdio.h>
#include <malloc.h>
using namespace std;
typedef int ElemType;
typedef struct LNode  
{
ElemType data;
struct LNode *next; //指向后继结点
} linkNode; //声明单链表结点类型

void InitList(linkNode *&L)
{
L=(linkNode *)malloc(sizeof(linkNode));  //创建头结点
L->next=NULL;
}
void DestroyList(linkNode *&L)
{
linkNode *pre=L,*p=pre->next;
while (p!=NULL)
{ free(pre);
pre=p;
p=pre->next;
}
free(pre); //此时p为NULL,pre指向尾结点,释放它
}
void DispList(linkNode *L)
{
/**************begin************/

/**************end************/
}
void CreateListR(linkNode *&L,ElemType a[],int n)
//尾插法建立单链表
{
/**************begin************/

/**************end************/
}
void split(linkNode *&L,linkNode *&L1,linkNode *&L2)
{
/**************begin************/

/**************end************/
}
int main()
{
linkNode *L,*L1,*L2;
int n=10;
ElemType a[]={1,2,3,4,5,6,7,8,9,10};
InitList(L);
InitList(L1);
InitList(L2);
CreateListR(L,a,n);
printf("L:");DispList(L);
printf("L->L1,L2\n");
split(L,L1,L2);
printf("L1:");DispList(L1);
printf("L2:");DispList(L2);
DestroyList(L1);
DestroyList(L2);
return 1;
}




提示

组合提交代码,仅需要提交函数定义,不要把所有的都提交了

你应该提交





void DispList(linkNode *L)

{

/**************begin************/



/**************end************/

}

void CreateListR(linkNode *&L,ElemType a[],int n)

//尾插法建立单链表

{

/**************begin************/



/**************end************/

}

void split(linkNode *&L,linkNode *&L1,linkNode *&L2)

{

/**************begin************/



/**************end************/

}


来源

 

[提交][状态]
ACM算法攻关部
  • Anything about this OnlineJudge, Please Contact Administrator. Click add QQ

    OJ system based on HUSTOJ Project , UI based on Twitter Bootstrap

    Copyright 2016 ACM算法攻关部
    关于网站改版