#include<stdio.h>
#include<malloc.h>
typedef struct LNode {
int data;
struct LNode* next;
}LNode, * LinkList;
int InitList_L(LinkList& L);
void CreatList(LinkList& L, int n,LNode *p);
int main() {
LinkList L1,L2;
LNode* p1, * p2;
int i,n1,n2;
InitList_L(L1);
InitList_L(L2);
printf("L1中的数据个数\n");
scanf("%d",&n1);
CreatList(L1,n1,p1);
printf("L2中的数据个数\n");
scanf("%d", &n2);
CreatList(L2, n2, p2);
return 0;
}
//初始化
int InitList_L(LinkList& L) {
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
return 1;
}
//头插法建立单链表
void CreatList(LinkList& L, int n,LNode *p) {
int i;
for (i = n; i > 0; --i) {
scanf("%d",&p->data);
p->next = L->next;//插入到表头
L->next = p;
}
}
错误如下图
修改如下,供参考:
#include<stdio.h>
#include<malloc.h>
typedef struct LNode {
int data;
struct LNode* next;
}LNode, * LinkList;
int InitList_L(LinkList& L);
void CreatList(LinkList& L, int n); //, LNode* p);
void PrintList(LinkList L);
int main() {
LinkList L1, L2;
//LNode* p1, * p2;
int i = 0, n1, n2;
InitList_L(L1);
InitList_L(L2);
printf("L1中的数据个数\n");
scanf("%d", &n1);
CreatList(L1, n1); //, p1);
printf("L2中的数据个数\n");
scanf("%d", &n2);
CreatList(L2, n2);//, p2);
PrintList(L1);
PrintList(L2);
return 0;
}
//初始化
int InitList_L(LinkList& L) {
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
return 1;
}
//头插法建立单链表
void CreatList(LinkList& L, int n){ //, LNode* p) {
int i;
LinkList p;
for (i = n; i > 0; --i) {
p = (LinkList)malloc(sizeof(LNode));
p->next = NULL;
scanf("%d", &p->data);
p->next = L->next;//插入到表头
L->next = p;
}
}
void PrintList(LinkList L)
{
LinkList p=L->next;
while (p)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
22行使用了p1,26行使用了p2,p1和p2在14行声明后没有赋值。
第14行修改为:
LNode* p1 = 0, *p2 = 0;