报错提示类型不兼容,为什么错了啊

baidu_37527602 2017-02-14 04:56:54
#include<stdio.h>
#define MaxSize 100

typedef int DataType;


typedef struct
{
DataType list[MaxSize];
int size;
}SeqList;


typedef struct student//定义学生信息结构体
{
long number;
char name[10];
char sex[3];
int age;
}StudentType;


void ListInit(SeqList *L,int listsize)
//初始化顺序表L
{
L->size=listsize;//定义初始元素个数
}



int ListLength(SeqList L)
//求当前数据元素个数
{
return L.size;
}



int ListInsert(SeqList *L,int i,DataType x)
//插入数据元素
//在顺序表L的第i(0<=i<=size)个位置前插入数据元素值x
//插入成功返回1,失败返回0
{
int j;
if(L->size>=MaxSize)
{
printf("顺序表已满无法插入!\n");
return 0;
}
if(i<0||i>L->size)
{
printf("参数i不合法!\n");
return 0;
}
else
{
for(j=L->size;j>i;j--)//从后向前依次后移数据,为插入做准备
L->list[j]=L->list[j-1];
L->list[i]=x;
L->size++;
return 1;
}
}



int ListDelete(SeqList *L,int i,DataType *x)
//删除数据元素
//删除顺序表L中位置(0<=i<=size)上的数据元素并保存到x中
//删除成功返回1,失败返回0
{
int j;
if(L->size<=0)
{
printf("顺序表已空无数据可删!\n");
return 0;
}
if(i<=0&&i>L->size-1)
{
printf("参数i不合法!\n");
return 0;
}
else
{
*x=L->list[i];//保存删除的元素到x中
for(j=i+1;j<=L->size-1;j++)//从前向后依次移
L->list[j-1]=L->list[j];
L->size--;
return 1;
}
}


int ListGet(SeqList L,int i,DataType *x)
//获取数据元素
//取顺序表L中第i个元素存于x中
//获取成功返回1,失败返回0
{
if(i<0||i>L.size-1)
{
printf("参数i不合法!\n");
return 0;
}
else
{
*x=L.list[i];
return 1;
}
}

void main(void)
{

SeqList myList;
StudentType s;
int i;
StudentType x[3]={
{2000001,"张三","男",20},
{2000002,"李四","男",21},
{2000003,"王五","女",22}
};
ListInit(&myList,0);
ListInsert(&myList,0,x[0]); //报错提示类型不兼容
ListInsert(&myList,1,x[1]);
ListInsert(&myList,2,x[2]);
for(i=0;i<ListLength(myList);i++)
{
ListGet(myList,i,&s);
printf("%d %s %s %d\n",s.number,s.name,s.sex,s.age);
}
}


...全文
132 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang0635 2017-02-14
  • 打赏
  • 举报
回复
形式参数是DataType,实际参数是StudentType,二者不同

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧