首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

链表有关问题,求帮忙多谢

2012-04-06 
链表问题,求帮忙谢谢#include iostream.h#include stdlib.htypedef struct LNode{int datastruct LNo

链表问题,求帮忙谢谢
#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;
}

不知道为什么错误。

[解决办法]

C/C++ code
#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)应该可以,
因为需要传递的是指针的地址,否则在函数内分配的指针在函数外是得不到的。

热点排行