我哪儿错了嘛 告诉我 我改
求两个集合的交:#include "stdio.h"
#include "stdlib.h"
#define NULL 0
#define OK 1
#define ERROR -1
typedef int ElemType;
typedef int Status;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreateList_L(LinkList *L,int n)//即使输入乱序的元素也会顺序的打出
{
int i,j,e,k,o;
LinkList p;
*L=(LinkList)malloc(sizeof(LNode));
(*L)->next=NULL;
ListInsert_L(*L,1,e);
for(i=2;i<=n+1;i++)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
o=p->data;
//p->next=(*L)->next;(*L)->next=p;
for(j=1;j<=i;j++)
{
GetElem_L(L,j,&e);
if(p<e) break;
}
//k=LocateElem_L(p,L,e,n);
ListInsert_L(*L,j,e);
}
}
Status GetElem_L(LinkList L,int i,ElemType *e)
{
int j;
LinkList p;
p=L->next;
j=1;
while(p&&j<i)
{
p=p->next;
++j;
}
if(!p||j>i) return ERROR;
e=p->data;
return OK;
}
Status ListInsert_L(LinkList *L,int i,ElemType e)
{
int j;
LinkList p,s;
p=L;j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return OK;
}
Status ListDelete_L(LinkList *L,int i,ElemType *e)
{
int j;
LinkList p,q;
p=L;j=0;
while(p->next&&j<i-1)
{
p=p->next;
++j;
}
if(!(p->next)||j>i-1) return ERROR;
q=p->next;p->next=q->next;
e=q->data; free(q);
return OK;
}
void Display(LinkList L){
LinkList p=L->next;
while(p!=NULL){
printf("%d__",p->data);
p=p->next;
}
return;
}
/*int LocateElem_L(LinkList p,LinkList L,ElemType e,int n)
{
int i,q;
q=L->next;
for(i=1;i<=n;i++)
{
if(p=q) return i;
else q=L->next;
}
}*/
void MergeList_L(LinkList *La,LinkList *Lb,LinkList *Lc)
{
LinkList pa=(*La)->next,pb=(*Lb)->next,pc;
pa=(*La)->next;
pb=(*Lb)->next;
Lc=pc=La;
while(pa&&pb)
{
if(pa->data<pb->data)
{
pc->next=pa;pc=pa;pa=pa->next;
}
else
{
if(pa->data==pb->data)
{
pa=pa->next;
}
else
{
pc->next=pb;pc=pb;pb=pb->next;
}
}
}
pc->next=pa?pa:pb;
free(Lb);
}
int main()
{
LinkList La,Lb,Lc,m,n,i,j;
printf("m?");
scanf("%d",&m);
CreateList_L(&La,m);
Display(La);
printf("n?");
scanf("%d",&n);
CreateList_L(&Lb,n);
Display(Lb);
//MergeList_L(&La,&Lb,&Lc);
//Display(Lc);
}