标题:一道顺序表的编译问题,求高手帮忙排错,感激不尽!
只看楼主
w32056
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2012-6-10
 问题点数:0 回复次数:2 
一道顺序表的编译问题,求高手帮忙排错,感激不尽!
编译器是vc++ 6.0 报错信息如下:
warning C4133: 'function' : incompatible types - from 'char [4]' to 'struct seqlist *'
这个信息是什么意思呢?求大侠指教!

程序如下
1:头文件
typedef struct
{
    int list[MAXSIZE]; // 存放顺序表的数组list[MAXSIZE];
    int num;           //当前顺序表元素个数 长度
}seqlist;

void creat(seqlist *l)  // 创建一个顺序表
{
    int i,n;
    printf("enter the number of elements:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("enter element [%d]:",i+1);
        scanf("%d",&(l->list[i]));
    }
    l->num=n;
}

//num
int num(seqlist *l)   //求顺序表长度
{
    return l->num;
}

//insert
int insert(seqlist *l,int m,int x)   // 插入元素
{
    int i,n;
    n=l->num;
   
    if(n==MAXSIZE)
    {
        printf("The list is overflow!\n");
        return -1;
    }
    else if(m<1 || m>n+1)
    {
        printf("Parameter error!\n");
        return -2;
    }
    else
    {
        for(i=n-1;i>=m-1;i--)
            l->list[i+1]=l->list[i];
        l->list[i]=x;
    }

    l->num=n+1;
    return 0;
}

//delete
int delete(seqlist *l,int m)  //删除元素
{
    int i,n;
    n=l->num;

    if(n==0)
    {
        printf("The list is empty!\n");
        return -1;
    }
    else if(m<1 || m>n)
    {
        printf("parameter error!\n");
        return -2;
    }
    else
    {
        for(i=m;i<=n-1;i++)
            l->list[i-1]=l->list[i];
        l->num=n-1;
        return 0;
    }
}

//located     
int locate(seqlist *l,int x)        //定位元素
{
    int i,n;
    n=l->num;
   
    for(i=0;i<=n-1;i++)
        if(l->list[i]==x)
            return ++i;         
    return 0;
}
//get
int get(seqlist *l,int m,int *x)   //取元素
{
    int n;
    n=l->num;
    if(m<1 || m>n)
    {
        printf("parameter error!\n");
        return -1;
    }
    else
    {
        *x=l->list[m-1];
        return 0;
    }
}
//print
void print_list(seqlist *l)  //打印出顺序表元素    最后程序报错也是报这个函数的错 ,但是这个输出函数好像是对的 并没有错呀
{
    int i,n;
    n=l->num;

    if(l->num==0)
        printf("The list is empty!\n");
    else
    {
        for(i=0;i<n;i++)
            printf("%d\t",l->list[i]);
        printf("\n");
    }
}

2.主函数:
 主函数意思是将两个顺序表 la ,lb ,求两个顺序表的并集
 将lb中的每一个元素跟la中的对比 有部相同的元素则调用插入函数insert 将其插入到la中 最后将la输出
#define MAXSIZE 100
#include<stdio.h>
#include"seqlist2.h"
main()
{
    seqlist la,lb;   
    int i,x;
   
    creat(&la);
    printf("Set A: \n");
    print_list(&la);

    creat(&lb);
    printf("Set B: \n");
    print_list(&lb);

    for(i=0;i<lb.num;i++)
    {
        x=lb.list[i];
        if(locate(&la,x)==0)
            insert(&la,la.num+1,x);
    }

    printf("Set new A: \n");
    print_list("&la");         <----------错误指向这一句
}
那个报错信息自己实在看不懂 求大侠指教!感激不尽!
C:\Users\hx\Desktop\数据结构 2\顺序表\线性表.c(27) : warning C4133: 'function' : incompatible types - from 'char [4]' to 'struct seqlist *'
搜索更多相关主题的帖子: warning elements function 信息 
2012-06-10 12:10
xfsunny
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-11-17
得分:0 
我觉得是这里的问题:
&la 需要加上(struct seqlist *)来做类型强制转换,这样才能完全匹配你调用的那些函数的参数类型。
2012-07-03 16:01
mfh
Rank: 6Rank: 6
等 级:侠之大者
帖 子:179
专家分:411
注 册:2009-5-31
得分:0 
print_list("&la");         <----------错误指向这一句 (这里多了个双引号中呀)
2012-07-09 14:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-371225-1-1.html




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

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