海滩超人 2019-12-02 14:33 采纳率: 0%
浏览 447

求救帮忙看一下我这个用C语言写的顺序线性表线性表合并为什么会有warning C4020: ?一直找不到原因

调试环境VC6.0

#include<stdlib.h>
#include<stdio.h>

typedef int Status;       // Status 是函数返回值类型,其值是函数结果状态代码。
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define List_Init_Size 100 //线性表存储空间初始分配量
#define Listincerment 10  //线性表存储空间的分配增量
typedef struct SqList
{
  int *elem;
  int length;
  int listsize;  //当前分配的存储容量()
}SqList;

Status InitList_Sq(SqList*L)
{//初始化顺序线性表//
 L->elem=(int*)malloc(List_Init_Size*sizeof(int));
 if(!L->elem)exit(OVERFLOW);    //存储分配失败
 L->length=0;
 return OK;
}

Status GetElem(SqList a,int i,int*e)
{ //读取元素
if(i<0||i>a.length) return ERROR;
 e=&a.elem[i-1];   //i-1存储第i个元素
 return OK;
}

int ListLength(SqList L)
{ //计算长度
  if(!L.elem)exit(ERROR);
  return L.length;
}

Status ListInsert_Sq(SqList *L, int i, int e)
{
 //i位置之前插入新元素e
 if(i<1||i>L->length+1)return ERROR;
 if((L->length)>=(L->listsize)){
  //当前存储空间已满,增加分配
    int*newbase,*q,*p;
       newbase=(int*)realloc(L->elem,(L->listsize+Listincerment)*sizeof(int));
    if(!newbase)exit(OVERFLOW);//存储分配失败}

    L->elem=newbase;                         //新的基址
    L->listsize+=Listincerment;            //增加容器容量
   q=&(L->elem[i-1]);                //q为插入位置
   for(p=&(L->elem[L->length-1]);p>=q;--p)
   *(p+1)=*p;  //插入位置及以后的元素后移
   *q=e;   //插入e
   ++L->length;
 }
return OK;}

 void MergeList(SqList La,SqList Lb,SqList*Lc)
 {  //线性表La和Lb中的数据元素按照值非递减排列。

   int i,j,k,ai,bj;
   InitList_Sq(Lc);

   i=j=1;k=0;
   La.length=ListLength(La); 
   Lb.length=ListLength(Lb);
   while((i<=La.length)&&(j<=Lb.length))
   {
     GetElem(La,i,&ai); 
     GetElem(Lb,j,&bj);
     if(ai<=bj)
     { ListInsert_Sq(Lc,++k,ai);
     ++i;}
     else{ListInsert_Sq(Lc,++k,bj);++j;}
   }
   while(i<=La.length)
   { GetElem(La,i,&ai);
     i++;
     ++k;
   InitList_Sq(Lc,k,&ai);}
    while(j<=Lb.length)
    { GetElem(Lb,j,&bj);j++;
    ++k;
    InitList_Sq(Lc,k,&bj); }
  }
void output(SqList L)
{
 int i;
 for(i=0;i<L.length;i++)
 {

  printf("%d  ",L.elem[i]);
 }
}

void main()
{
 SqList a,b,c;
 int i,j,k;
 InitList_Sq(&a);
 InitList_Sq(&b);
 printf("输入要写入链表a中元素的个数");
 scanf("%d",&j);
 printf("输入每个元素");
 for(i=1;i<=j;i++)
 {
  int e;
  scanf("%d",&e);
  ListInsert_Sq(&a,i,e);
 }
 printf("输入要写入链表b中元素的个数\n");
 scanf("%d",&k);
 printf("输入每个元素");
 for(j=1;j<=k;i++)
 { 
  int e;
  scanf("%d",&e);
  ListInsert_Sq(&b,i,e);
 }
 MergeList(a,b,&c);
 output(c);
}


图片说明

  • 写回答

1条回答 默认 最新

  • zhya_564 2019-12-02 16:24
    关注

    不是提示的很明显吗,你在80行和84行调用InitList_Sq函数,参数有三个。

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序