| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4602 人关注过本帖
标题:那位路过的大神帮我看看我错在哪里了?我只能将第一个单链表A输入,第二个就 ...
只看楼主 加入收藏
玲玲张
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-9-18
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:2 
那位路过的大神帮我看看我错在哪里了?我只能将第一个单链表A输入,第二个就不能输入(运行显示错误)
#include <stdio.h>
#include <stdlib.h>

#define True 1
#define False 0
#define OK 1
#define Errorr 0

typedef int Status;
typedef int ElemType;

typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

Status CreatList_L(LinkList &L,int n)
{
    LinkList p;
    int i;
    L=(LinkList )malloc(sizeof(LNode));   //初始化L(建立一个空表(头节点))
    L->next=NULL;
    //printf("Please enter a number:");
    //scanf("%d",&n);
    printf("Please enter %d number:",n);
    for(i=n;i>0;--i)
    {
        p=(LinkList )malloc(sizeof(LNode));   //建立一个新结点  
        scanf("%d",p->data);
        p->next=L->next;    //将L->next赋值给p->next
        L->next=p;   //将L->next指针指向p
    }
    return OK;
}

main()
{
    LinkList La,Lb,Lc;
    int n1,n2;
   
    printf("Please enter A:\n");
    printf("Please enter a number:");
    scanf("%d",&n1);
    CreatList_L(La,n1);

    printf("Please enter B:\n");
    printf("Please enter a number:");
    scanf("%d",&n2);
    CreatList_L(Lb,n2);

}
搜索更多相关主题的帖子: include number False include number False 
2015-10-29 20:51
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:10 
自己写的?
2015-11-01 08:01
玲玲张
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-9-18
收藏
得分:0 
恩恩;(可以帮我看一下下面我写的代码吗?我不知道错在哪?)
#include <stdio.h>
#include <stdlib.h>

#define True 1
#define False 0
#define OK 1
#define Error 0

typedef int Status;
typedef int ElemType;

typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

//头插法(逆序输入)
Status CreateList_L(LinkList &L)
{
    LinkList p;
    int n,i;
    L=(LinkList)malloc(sizeof(LNode));//初始化
    L->next=NULL;
    printf("Please enter a number :");
    scanf("%d",&n);
    printf("Please enter %d number:",n);
    for(i=n;i>0;--i)
    {
        p=(LinkList)malloc(sizeof(LNode));    //创建新结点
        scanf("%d",&p->data);
        p->next=L->next;  //将 L->next指针域赋值给 p->next
        L->next=p;   // L->next指向 P
    }
    return OK;
}

//合并La和Lb,并写入到Lc
Status Combine_L(LinkList La,LinkList Lb,LinkList &Lc)
{
    LinkList pa,pb,p1,p2,k;
    Lc=(LinkList)malloc(sizeof(LNode));//初始链表Lc
    Lc->next=NULL;
    pa=La;pb=Lb;p1=pa;k=pa->next;
    //判断链表A中是否有重复的数据,若有,则删除
    while(pa!=NULL)
    {
        if(p1->next==NULL )
        {
            pa=pa->next;
            p1=pa;
        }   //移位
        else if(pa->data==p1->next->data)
        {
            p1->next=k->next;
            free(k);
        }    //删除
        else
        {
            p1=p1->next;
            k=k->next;
        }  //移位
    }  
    Lc=pa;
    //将链表B中数据与C 不相同的插入到Lc中
    while(pb!=NULL)
    {
        while(Lc!=NULL)
        {
            if(Lc->data == pb->data)
            {
                break;
            }
            else
            {
                Lc=Lc->next;
            }
        }
        if(Lc==NULL)
        {
            p2->data=pb->data;  //将 pb->data赋值给 P2->data
            Lc->next=p2;
            p2->next=Lc->next;
        }//插入
        else
        {
            return Error;
        }
        pb=pb->next;
    }
    return OK;
}

//求交集(将A与B相同的 数写入到C)
Status JiaoJi_L(LinkList La,LinkList Lb,LinkList &Lc)
{
    LinkList pa,pb,p1,k;
    Lc=(LinkList)malloc(sizeof(LNode));//初始链表Lc
    Lc->next=NULL;
    pa=La; pb=Lb;
    //判断链表A中是否有重复的数据,若有,则删除
    while(pa!=NULL)
    {
        if(p1->next==NULL )
        {
            pa=pa->next;
            p1=pa;
        }   //移位
        else if(pa->data==p1->next->data)
        {
            p1->next=k->next;
            free(k);
        }    //删除
        else
        {
            p1=p1->next;
            k=k->next;
        }  //移位
    }  
    Lc=pa;
    k=Lc;
    //判断Lb与Lc中是否有相同的数据,若无,则删除Lc中的数据
    while(Lc!=NULL)
    {
        while(pb!=NULL)
        {
            if(Lc->data == pb->data)
            {
                break;  //跳出该循环
            }
            else
            {
                pb=pb->next;
            }
        }
        if(pb==NULL)
        {
            Lc=k->next;
            free(k);
        } //删除
        Lc=Lc->next;  
    }
    return OK;
}

//求交集(将A与B相同的相减,然后把A中剩下的数写入到C)
Status ChaJi_L(LinkList La,LinkList Lb,LinkList &Lc)
{
    LinkList pa,pb,p1,k;
    Lc=(LinkList)malloc(sizeof(LNode));//初始链表Lc
    Lc->next=NULL;
    pa=La; pb=Lb;
    //判断链表A中是否有重复的数据,若有,则删除
    while(pa!=NULL)
    {
        if(p1->next==NULL )
        {
            pa=pa->next;
            p1=pa;
        }   //移位
        else if(pa->data==p1->next->data)
        {
            p1->next=k->next;
            free(k);
        }    //删除
        else
        {
            p1=p1->next;
            k=k->next;
        }  //移位
    }  
    Lc=pa;
    k=Lc;
    //判断Lb与Lc中是否有相同的数据,若有,则删除Lc中的数据
    while(Lc!=NULL)
    {
        while(Lc!=NULL)
        {
            if(Lc->data ==pb->data)
            {
                Lc=k->next;
                free(k);
            }//删除
            else
            {
                pb=pb->next;
            } //移位
        }
        Lc=Lc->next;  
    }
    return OK;
}

Status printLink(LinkList L)//打印链表
{
    LinkList p=L->next;
    while(p!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
    return OK;
}

main()
{
    LinkList La,Lb,Lc;
   
    printf("Please enter A:\n");
    CreateList_L(La);
    printf("Please enter B:\n");
    CreateList_L(Lb);
   
    printf("C = A ∪ B\n");
    Combine_L(La,Lb,Lc);
    printLink(Lc);
   
    printf("C = A ∩B\n");
    JiaoJi_L(La,Lb,Lc);
    printLink(Lc);
   
    printf("C = A - B\n");
    ChaJi_L(La,Lb,Lc);
    printLink(Lc);
   
}
2015-11-01 10:52
快速回复:那位路过的大神帮我看看我错在哪里了?我只能将第一个单链表A输入,第 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021387 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved