| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 460 人关注过本帖
标题:有个问题,哪位大大帮我改下程序。。- -
只看楼主 加入收藏
望北
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-1
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
有个问题,哪位大大帮我改下程序。。- -
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
struct Link *INSERT_SET(struct Link *head);
struct Link *C(struct Link *a,struct Link *b);
struct Link *D(struct Link *a,struct Link *b);
struct Link *E(struct Link *a,struct Link *b);
int IN_SET();
void DispLink(struct Link *head);
struct Link
{
    int data;
    struct Link *next;
};
void main()
{
    printf("\n\n\n\n");
    printf("      1 请输入集合A的元素\n");
    printf("      2 请输入集合B的元素\n");
    printf("      3 输出集合A的元素\n");
    printf("      4 输出集合B的元素\n");
    printf("      5 测试集合A的元素\n");
    printf("      6 测试集合B的元素\n");
    printf("      7 求集合A,B的交集\n");
    printf("      8 求集合A,B的并集\n");
    printf("      9 求集合A,B的对称差\n");
    printf("      0 退出系统");
    printf("\n\n\n\n");
   
/////程序的实现(主函数中的调用)

     int choice;
     struct Link *a=NULL;
     struct Link *b=NULL;

     scanf("%d",&choice);
     switch(choice)
     {
     case 1:  //输入集合A的元素
         a=INSERT_SET(a);
         printf("\n");
         break;
     case 2:  //输入集合B的元素
         b=INSERT_SET(b);
         printf("\n");
         break;
     case 3:  //输出集合A的元素
         printf("集合A:\n");
         DispLink(a);
         break;
     case 4:  //输出集合B的元素
         printf("集合B:\n");
         DispLink(b);
         break;
     case 5:  //测试集合A
         a=IN_SET(a);
         break;
     case 6:  //测试集合B
         b=IN_SET(b);
         break;
     case 7:  //求集合A,B的交集C
         C(a,b);
         break;
     case 8:  //求集合A,B的并集D
         D(a,b);
         break;
     case 9:  //求集合A,B的对称差
         E(a,b);
         break;
     case 0:  //退出系统
         exit(0);
    default:printf("您输入的数据不正确,请输入自然数(1~10)\n");
    }
    system("pause");////停顿   
    fflush(stdin);  ////清除输入缓冲区,防止不规范输入   
    system("cls");  ////调用系统函数实现清屏



}

//集合元素输入并插入到单链表中的函数,保证所输入的集合中的元素是唯一且以非递减方式存储在单链表中


struct Link *INSERT_SET(struct Link *head)
{
    struct Link *p1=NULL;
    struct Link *p2=head;
    int data;
    p1=(struct Link *)malloc(sizeof(struct Link));  //为新添加的结点申请内存
    if(p1=NULL)   //若申请内存失败
    {
        printf("No enough memory to molloc.\n");
        exit(0);   //退出程序
    }
    else if(head=NULL)
    {
        head=p1;
    }
    else
    {
        while(p2->next!=NULL)
        {
            p2=p2->next;
        }
        p2->next=p1;
    }
    p2=p1;
    printf("请输入一个元素:\n");
    scanf("%d",&data);
   
    if(p1->data==p2->data)
    {
        printf("这个数已经存在,请输入另一个数:\n");
        scanf("%d",&data);
    }
    else if(p1->data<p2->data)
    {
        int m;
        m=p1->data;
        p1->data=p2->data;
        p2->data=m;
    }
    else
        p2->data=data;
    p2=p1;
    p2->next=NULL;

    return head;

}




//集合元素测试函数IN_SET,如果元素已经在集合中返回0,否则返回1

int IN_SET(struct Link *head)
{
    int test;
    struct Link *p=head;
    if(p==NULL)
        printf("这个集合没有元素\n");
    else
    {
        printf("请输入一个测试值:\n");
        scanf("%d",&test);
        while(p!=NULL)
        {
            if(test==p->data)
            {
                return 0;
            }
            else
            {
            return 1;
            }
            p=p->next;
        }
    }

}


//编写集合元素输出函数,对建立的集合链表按非递增方式输出

void DispLink(struct Link *head)
{
    struct Link *p=head;
    while(p!=NULL)
    {
        printf("%4d",p->data);
        p=p->next;
    }
}




//求集合A、B的交C=A∩B的函数
struct Link *C(struct Link *a,struct Link *b)
{
    struct Link *d;
    struct Link *e;
    struct Link *c;
    struct Link *p1=a;
    struct Link *p2=b;
    d=e=(struct Link *)malloc(sizeof(struct Link));
    while(p1!=NULL)
    {
        while(p2!=NULL)
        {
            if(p1->data==p2->data)
            {
                c=(struct Link *)malloc(sizeof(struct Link));
                c->data=p1->data;
                c->next=NULL;
                d->next=c;
                d=c;
            }
            p2=p2->next;
        }
        p2=a;
        p1=p1->next;

    }
    return e->next;

}




//求集合A、B的并D=A∪B的函数,并输出集合D的元素

struct Link *D(struct Link *a,struct Link *b)
{
    struct Link *c;
    struct Link *p1=a;
    struct Link *p2=b;

    while(p1!=NULL)
    {
        while(p2!=NULL)
        {
            if(p1->data==p2->data)
            {    c=(struct Link *)malloc(sizeof(struct Link));
                c->data=p1->data;
                p1=p1->next;
                p2=p2->next;
                c->next=NULL;
            }
            else
            {
                struct Link *d;
                c=d=(struct Link *)malloc(sizeof(struct Link));
                c->data=p1->data;
                d=c->next;
                c=d;
                c->data=p2->data;
                c->next=NULL;

            }
        }
    }
    return c;
}


// 求集合A与B的对称差E=(A-B)∪(B-A) 的函数,并输出集合E的元素


struct Link *E(struct Link *a,struct Link *b)
{
    struct Link *d;
    struct Link *e;
    struct Link *c;
    struct Link *p1=a;
    struct Link *p2=b;
    while(p1!=NULL)
    {
        while(p2!=NULL)
        {
            if(p1->data!=p2->data)
            {
                c=(struct Link *)malloc(sizeof(struct Link));
                d=(struct Link *)malloc(sizeof(struct Link));
                c->data=p1->data;
                d->data=p2->data;
                p1=p1->next;
                p2=p2->next;
                c->next=NULL;
                d->next=NULL;

            }
        }
    }
    e=(struct Link *)malloc(sizeof(struct Link));
    e=D(c,d);
    return e;

}



//释放内存
void freeNode(struct Link *head)
{
    struct Link *p1=head,*p2=NULL;

    while(p1!=NULL)
    {
        p2=p1;
        p1=p2->next;
        free(p2);
    }
    head->next=NULL;
}


我编译是这样

F:\c语言课程设计\c语言课程设计.cpp(56) : error C2660: 'IN_SET' : function does not take 1 parameters
F:\c语言课程设计\c语言课程设计.cpp(59) : error C2660: 'IN_SET' : function does not take 1 parameters
执行 cl.exe 时出错.
搜索更多相关主题的帖子: head void include 元素 
2012-07-01 15:51
望北
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-1
收藏
得分:0 
在线等回复。。
2012-07-01 15:52
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:10 
英语基础为0?

总有那身价贱的人给作业贴回复完整的代码
2012-07-01 16:11
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:10 
a=IN_SET(a);
int IN_SET(struct Link *head)
IN_SET函数要求返回一个整形,你用a来返回,类型错误。a是一个链表指针。

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-07-04 07:41
快速回复:有个问题,哪位大大帮我改下程序。。- -
数据加载中...
 
   



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

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