数据结构中结构体定义的问题,请高手解答,不甚感激? 20

结构体定义如下:typedefintelemtype;typedefstruct{elemtype*elem;intlength;intlistsize;}sqlist;... 结构体定义如下:
typedef int elemtype;
typedef struct
{
elemtype *elem;
int length;
int listsize;
}sqlist;
涉及elem的使用如下:
for(int i=0;i<=len-1;i++)
{
scanf("%d",&l.elem[i]);
}
l.length=len;
printf("建立顺序表为: \n");
for(int i=0;i<=len-1;i++)
{
printf("%d ",l.elem[i]);
}
printf("\n顺序表一共%d个元素。\n",l.length);
}
elem是什么类型?如果是指针,指针可以像数组一样用吗?而且也没指定数组大小啊。
而且定义时必须加*号,否则出错,为什么?
还有一种情况,定义了一个结构体类型qtype,定义变量时是 qstpe *s;为什么呢?结构体类型也可以是指针?而使用时,s又不会像第一个elem一样是数组。
******************************************请注意:*************************************************
!!!这些程序都是正确的,可以运行,是从已经编好的程序里截取的。就是不明白为什么这样定义和使用。!!!
******************************************************************************************************
展开
 我来答
243949427
2011-06-11 · TA获得超过175个赞
知道答主
回答量:43
采纳率:0%
帮助的人:40.9万
展开全部
elem是整型;可以型数组那样用的,也可以直接用数组而不用指针;如:
typedef struct
{ DataType data[ListSize]; //定义一个数组data,用来存放表的结点
int length; //当前的表长度
}SqList;//顺序表
void output(SqList L) //在屏幕上输出对应操作后的顺序表的所有元素
{
int i;
printf("***输出线性表为:");
for (i=1; i<=L.length; i++)
printf("->%d",L.data[i]);//逐个输出线性表中的元素
printf("\n");

}
两个效果一样,只是访问效果不同而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
相思丶猫2C
2011-06-06 · TA获得超过1198个赞
知道小有建树答主
回答量:1432
采纳率:50%
帮助的人:958万
展开全部
不才,也来看看。
elem是int*类型,所有出现elemtype的地方都可以替换成int。指针可以像数组一样使用,前提是必须分配存储空间(指针是手动分配,数组是系统分配)。在scanf位置会出错,因为没有为elem分配空间。在c中用elem=(int*)malloc(20);
关于结构体,你可以把他当做常用类型,和普通的int灯类型一样处理。
sqlist s;
s.elem=(int*)malloc(20);
.....
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kgqg6l6dk
2011-06-07 · TA获得超过472个赞
知道答主
回答量:587
采纳率:100%
帮助的人:0
展开全部

啥问题,你输出printf 的时候 注意各个输出之间加空格
另外输入的时候 最后三个输入的时候三个之间注意加 逗号
至于#include"stdafx.h" 估计是你选择了 console 工程 会 加上这个头文件 必须加
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式