链表问题,求帮忙谢谢
#include "iostream.h"
#include "stdlib.h"
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList;
void CreatList_L(LinkList L,int n);
LinkList MergeList_L(LinkList La, LinkList Lb, LinkList Lc);
int main()
{
LinkList L1 = NULL, L2 = NULL;
LinkList p = NULL, Lc = NULL; //要用到的指针
CreatList_L(L1, 4);
CreatList_L(L2, 4);
cout<<"当前两个链表分别为:"<<endl;
p = L1->next;
while(p) //输出
{
cout<<p->data<<endl;
p = p->next;
cout<<"\n"<<endl;
}
p = L2->next;
while(p)
{
cout<<p->data<<endl;
p = p->next;
cout<<"\n"<<endl;
}
MergeList_L(L1, L2, Lc);
cout<<"修改后的链表为:"<<endl;
p = L1->next;
while(p) //输出
{
cout<<"p->data "<<endl;
p = p->next;
}
return 0;
}
void CreatList_L(LinkList L,int n)
{
int i;
LinkList p = NULL;
cout<<"新建带有四个节点的链表,并按升序输入四个节点的值\n"<<endl;
L= (LinkList)malloc(sizeof(LNode));
L->next = NULL;
for(i = n; i >0; --i)
{
p = (LinkList)malloc(sizeof(LNode));
cin>>p->data;
p->next = L->next;
L->next = p;
}
}
LinkList MergeList_L(LinkList La, LinkList Lb, LinkList Lc)
{
LinkList pa, pb, 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
{
pc->next = pb;
pc = pb;
pb = pb->next;
}
pc->next = pa ? pa : pb;
free(Lb);
}
return La;
}
不知道为什么错误。
[解决办法]
#include <iostream>#include <stdlib.h>using namespace std;typedef struct LNode{ int data; struct LNode *next;}LNode, *LinkList;void CreatList_L(LinkList &L,int n);LinkList MergeList_L(LinkList &La, LinkList Lb, LinkList Lc);int main(){ LinkList L1 = NULL, L2 = NULL; LinkList p = NULL, Lc = NULL; //要用到的指针 CreatList_L(L1, 4); CreatList_L(L2, 4); cout<<"当前两个链表分别为:"<<endl; p = L1->next; while(p) //输出 { cout<<p->data<<endl; p = p->next; cout<<"\n"<<endl; } p = L2->next; while(p) { cout<<p->data<<endl; p = p->next; cout<<"\n"<<endl; } MergeList_L(L1, L2, Lc); cout<<"修改后的链表为:"<<endl; p = L1->next; while(p != NULL) //输出 { cout<<"p->data "<<endl; p = p->next; } return 0;}void CreatList_L(LinkList &L,int n){ int i; LinkList p = NULL; cout<<"新建带有四个节点的链表,并按升序输入四个节点的值\n"<<endl; L= (LinkList)malloc(sizeof(LNode)); L->next = NULL; for(i = n; i >0; --i) { p = (LinkList)malloc(sizeof(LNode)); cin>>p->data; p->next = L->next; L->next = p; } L->next = NULL;}LinkList MergeList_L(LinkList &La, LinkList Lb, LinkList Lc){ LinkList pa, pb, 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 { pc->next = pb; pc = pb; pb = pb->next; } pc->next = pa ? pa : pb; } free(Lb); free(pb); return La;}
[解决办法]
void CreatList_L(LinkList L,int n)
改为
void CreatList_L(LinkList &L, int n)
[解决办法]
void CreatList_L(LinkList L,int n)定义错了。
改为void CreatList_L(LinkList& L,int n)应该可以,
因为需要传递的是指针的地址,否则在函数内分配的指针在函数外是得不到的。