我是想创造两个链表,然后输出来着,但是输出好像是其他的数字,链表一长就有问题了
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1 //预定义常量
#define FALSE 0
#define OK 1
#define ERROR 0
typedef struct LNode
{
int num;
LNode *next;
}LNode, *LinkList;
int InitList(LNode *L)
{
L=(LNode*)malloc(sizeof(LNode));
L->next=NULL;
return OK;
}
int ListInsert(LNode *L,int i,int e)
{
LinkList p=L,s;int j=0;
while(p && (j<i-1))
{
p=p->next;++j;
}
if(!p||j>1) return ERROR;
s=(LNode*)malloc(sizeof(LNode));
s->num=e;
s->next=p->next;
p->next=s;
return OK;
}
int ListDelete(LNode *L,int i)
{
LinkList p=L,q;int j=0;
while(p && (j<i-1))
{
p=p->next;++j;
}
if(!p->next||j>i-1) return ERROR;
q=p->next;
p->next=q->next;
free(q);
}
int print(LNode *L,int length)
{
LNode *p=L;
int i;
for(i=0;i<length;i++)
{
p=p->next;
printf("%d ",p->num);
}
printf("\n");
return OK;
}
int CreateLinkList(LNode *L,int length)
{
int i,data;
printf("输入链表中的数据:");
for(i=0;i<length;i++)
{
scanf("%d",&data);
ListInsert(L,i+1,data);
}
return OK;
}
int main()
{
int m,n,i,data;
LNode a,b,*A=&a,*B=&b,*p;
InitList(A);InitList(B);
printf("输入A,B链表的长度:");
scanf("%d %d",&m,&n);
CreateLinkList(A,m);
CreateLinkList(B,n);
print(A,m);
print(B,n);
}

初始化函数写法错误,这么初始化是不能修改外部A和B指针的指向的,如果用指针为参数,应该用指针的指针作为参数,或者返回值是指针,修改如下:(修改处已加注释)
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1 //预定义常量
#define FALSE 0
#define OK 1
#define ERROR 0
typedef struct LNode
{
int num;
LNode *next;
}LNode, *LinkList;
int InitList(LNode **L) //将参数改为指针的指针
{
*L=(LNode*)malloc(sizeof(LNode)); //L改为*L
(*L)->next=NULL; //L改为*L
return OK;
}
int ListInsert(LNode *L,int i,int e)
{
LinkList p=L,s;int j=0;
while(p && (j<i-1))
{
p=p->next;++j;
}
if(!p) return ERROR; //去掉 j>1条件,只要p不为空就可以了啊
s=(LNode*)malloc(sizeof(LNode));
s->num=e;
s->next=p->next;
p->next=s;
return OK;
}
int ListDelete(LNode *L,int i)
{
LinkList p=L,q;int j=0;
while(p && (j<i-1))
{
p=p->next;++j;
}
if(!p->next||j>i-1) return ERROR;
q=p->next;
p->next=q->next;
free(q);
}
int print(LNode *L,int length)
{
LNode *p=L;
int i;
for(i=0;i<length;i++)
{
p=p->next;
printf("%d ",p->num);
}
printf("\n");
return OK;
}
int CreateLinkList(LNode *L,int length)
{
int i,data;
printf("输入链表中的数据:");
for(i=0;i<length;i++)
{
scanf("%d",&data);
ListInsert(L,i+1,data);
}
return OK;
}
int main()
{
int m,n,i,data;
LNode a,b,*A=&a,*B=&b,*p;
InitList(&A);InitList(&B); //参数改为A和B的地址
printf("输入A,B链表的长度:");
scanf("%d %d",&m,&n);
CreateLinkList(A,m);
CreateLinkList(B,n);
print(A,m);
print(B,n);
system("pause");
return 0;
}