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

结构体定义如下:
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一样是数组。
******************************************请注意:*************************************************
!!!这些程序都是正确的,可以运行,是从已经编好的程序里截取的。就是不明白为什么这样定义和使用。!!!
******************************************************************************************************

第1个回答  2011-06-11
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");

}
两个效果一样,只是访问效果不同而已
第2个回答  2011-06-06
不才,也来看看。
elem是int*类型,所有出现elemtype的地方都可以替换成int。指针可以像数组一样使用,前提是必须分配存储空间(指针是手动分配,数组是系统分配)。在scanf位置会出错,因为没有为elem分配空间。在c中用elem=(int*)malloc(20);
关于结构体,你可以把他当做常用类型,和普通的int灯类型一样处理。
sqlist s;
s.elem=(int*)malloc(20);
.....本回答被网友采纳
第3个回答  2011-06-07

啥问题,你输出printf 的时候 注意各个输出之间加空格
另外输入的时候 最后三个输入的时候三个之间注意加 逗号
至于#include"stdafx.h" 估计是你选择了 console 工程 会 加上这个头文件 必须加
相似回答