问题:代码72行一直报错,是因为建表和初始化的只有L吗?应该怎么改才能正确运行?
题目:有一个由整数元素构成的非空单链表L,设计一个算法,将其拆分成两个单链表L和L2,使得L单链表中含有所有的偶数节点,B单链表中含有所有的奇数节点,且保持原来的相对次序
(注释:r1是L的尾指针,r2是L2的尾指针)
#include<stdio.h>
#include<malloc.h>
typedef int ElemTyped;
typedef struct Lnode
{
int data;
struct Lnode *next;
}LinkNode;
void InitList(LinkNode *&L)
{
L=(LinkNode *)malloc(sizeof(LinkNode));
L->next=NULL;
}
void CreatList(LinkNode *L,int a[],int n)
{
LinkNode *r=L,*p;
L=(LinkNode *)malloc(sizeof(LinkNode));
for(int i=0;i<n;i++)
{
p=(LinkNode *)malloc(sizeof(LinkNode));
p->data=a[i];
r->next=p;
r=p;
}
r->next=NULL;
}
void DispList(LinkNode *&L)
{
LinkNode *p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
void cf(LinkNode *&L,LinkNode *&L2)
{
L2=(LinkNode *)malloc(sizeof(LinkNode));
LinkNode *r=NULL,*r1=L,*r2=L2,*p=L->next;
L->next=NULL;
L2->next=NULL;
while(p!=NULL)
{
r=p;
p=p->next;
if(r->data%2==0)
{
r1->next=r;
r1=r;
}
else
{
r2->next=r;
r2=r;
}
}
r1->next=r2->next=NULL;
}
int main()
{
LinkNode *L;
int a[7];
InitList(L);
printf("请输入:");
for(int i=0;i<7;i++)
{
scanf("%d",&a[i]);
}
CreatList(L,a,7);
printf("请输出:");
DispList(L);
cf(L,L2);
printf("请输出:");
DispList(L);
DispList(L2);
}