#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data;
struct Node* next;
}Node,*LinkList;
int main()
{
//建立单链表
LinkList LA;
*LA=(LinkList)malloc(sizeof(Node));
*LA->next=NULL;
Node *r,*s;
int c;
r=LA;
int flag=1,count=0;
while(flag)
{
printf("Please input new node to the LinkList,node must be intatger,input q to quit:\n");
scanf("%d",&c);
if(c!="q")
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
count++;
}
else
{
flag=0;
r->next=NULL;
}
}
Deal(LA,count);
//打印新生成的表
printf("New LinkList is:\n");
r=LA->next;
while(r->next!=NULL)
{
printf("%5d",r->data);
}
return 0;
}
int Deal(LinkList *LA,int n)//n为单链表长度,n为偶数
{
LinkList LB,LC;
*LB=(LinkList)malloc(sizeof(Node));//建立头结点
*LB->next=NULL;//建立空的单链表LB
*LC=(LinkList)malloc(sizeof(Node));//建立头结点
*LC->next=NULL;//建立空的单链表LC
Node *p,*q,*r;
int i;
p=LA->next->next;//令指针p指向序号为偶数的元素
q=LA->next;//令指针q指向序号为奇数的元素
r=LB;//令指针r指向LB
s=LC;//令指针s指向LC
//插入LB的第一个元素
LB->next=p;
q-next=p-next;
p=p->next->next;
while(p->next!=NULL&&q->next!=NULL)
{
//尾插法
s->next=q;
LA=q->next;
q=q->next->next;
s=s->next;
//头插法
p->next=LB->next;
LB->next=p;
p=p->next->next;
}
//合并LB/LC两表
if(p->next==NULL)
{
p->next=LC->next;
free(LC);
}
return 0;
}
程序无法通过编译,麻烦各位大神帮忙看一看那里出问题了
不考虑运行,仅仅修改编译错误,如下:
如果运行还有问题,请点我回答左上角的采纳和向上的箭头,重新提问,我继续回答。
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
typedef int ElemType;
typedef struct Node
{
ElemType data;
Node* next;
}*LinkList;
int Deal(LinkList *LA,int n);
int main()
{
//建立单链表
LinkList * LA = NULL;
*LA=(LinkList)malloc(sizeof(Node));
(*LA)->next=NULL;
Node *r,*s;
int c;
r=*LA;
int flag=1,count=0;
while(flag)
{
printf("Please input new node to the LinkList,node must be intatger,input q to quit:\n");
scanf("%d",&c);
if(c!='q')
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
count++;
}
else
{
flag=0;
r->next=NULL;
}
}
Deal(LA,count);
//打印新生成的表
printf("New LinkList is:\n");
r=(*LA)->next;
while(r->next!=NULL)
{
printf("%5d",r->data);
}
return 0;
}
int Deal(LinkList *LA,int n)//n为单链表长度,n为偶数
{
LinkList *LB,*LC;
*LB=(LinkList)malloc(sizeof(Node));//建立头结点
(*LB)->next=NULL;//建立空的单链表LB
*LC=(LinkList)malloc(sizeof(Node));//建立头结点
(*LC)->next=NULL;//建立空的单链表LC
Node *p,*q,*r,*s;
int i;
p=(*LA)->next->next;//令指针p指向序号为偶数的元素
q=(*LA)->next;//令指针q指向序号为奇数的元素
r=*LB;//令指针r指向LB
s=*LC;//令指针s指向LC
//插入LB的第一个元素
(*LB)->next=p;
q->next=p->next;
p=p->next->next;
while(p->next!=NULL&&q->next!=NULL)
{
//尾插法
s->next=q;
*LA=q->next;
q=q->next->next;
s=s->next;
//头插法
p->next=(*LB)->next;
(*LB)->next=p;
p=p->next->next;
}
//合并LB/LC两表
if(p->next==NULL)
{
p->next=(*LC)->next;
free(LC);
}
return 0;
}
你这个问题太多了,你把Deal函数在main之后定义了,就需要在main之前进行声明一下,否则main里面调用时无法识别;LB本身就是一个指针,malloc返回的是开辟内存的地址,而且你也转为LinkList类型了,LB前面就不应该再加“*”;*LB->next=NULL;这行的“*”也去掉;同理下两行的LC前面的*去掉,好多啊,不一一说了,附上正确编译通过代码,望采纳^_^
#define MAXSIZE 20
typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node* next;
}*LinkList;
int Deal(LinkList LA, int n);//n为单链表长度,n为偶数
int main()
{
//建立单链表
LinkList LA;
LA = (LinkList)malloc(sizeof(Node));
LA->next = NULL;
Node r, *s;
int c;
r = LA;
int flag = 1, count = 0;
while (flag)
{
printf("Please input new node to the LinkList,node must be intatger,input q to quit:\n");
scanf_s("%d", &c);
if (c != 'q')
{
s = (Node)malloc(sizeof(Node));
s->data = c;
r->next = s;
r = s;
count++;
}
else
{
flag = 0;
r->next = NULL;
}
}
Deal(LA, count);
//打印新生成的表
printf("New LinkList is:\n");
r = LA->next;
while (r->next != NULL)
{
printf("%5d", r->data);
}
return 0;
}
int Deal(LinkList LA, int n)//n为单链表长度,n为偶数
{
LinkList LB, LC;
LB = (LinkList)malloc(sizeof(Node));//建立头结点
LB->next = NULL;//建立空的单链表LB
LC = (LinkList)malloc(sizeof(Node));//建立头结点
LC->next = NULL;//建立空的单链表LC
Node *p, *q, *r, *s;
int i;
p = (LA->next->next);//令指针p指向序号为偶数的元素
q = LA->next;//令指针q指向序号为奇数的元素
r = LB;//令指针r指向LB
s = LC;//令指针s指向LC
//插入LB的第一个元素
LB->next = p;
q->next = p->next;
p = p->next->next;
while (p->next != NULL&&q->next != NULL)
{
//尾插法
s->next = q;
LA = q->next;
q = q->next->next;
s = s->next;
//头插法
p->next = LB->next;
LB->next = p;
p = p->next->next;
}
//合并LB/LC两表
if (p->next == NULL)
{
p->next = LC->next;
free(LC);
}
return 0;
}