顺序表2种结构体构造方法

昨天上课讲到了顺序表的结构体在构造时候可以应用指针做数据成员,而不需要定义一个数组,那么具体方法是这样的:

typedef struct{
    int *data;
    int length;
}SqList;

这种方式构造顺序表,data项不用数组,这样可以动态生成,不浪费空间,但是data是个指针,怎么表示多个连续的数据呢,所以他的CreateSqlist写法是

void CreateSqList(SqList &L)
{
    int i,node,n;
    cin>>n;
    L.data=new int[n];//动态申请分配n个int内存空间
    for(i=0;i<n;i++)
    {
          cin>>node;
          L.data[i]=node;  //可以用下标法表示元素。
    }
    L.length=n;
}

顺序表L中data申请内存空间可以用new方法动态申请n个连续的int空间内存,这样后面表示data中某个数据元素,也可以用下标法表示,就是:

L.data[i]
 

再看看main方法:

int main()
{
SqList L; //不需要定义指针类型,操作更方便。
CreateSqList(L) ;
DispSqList(L); 
} 

和课本的顺序表方法定义,我们比较下:

typedef struct{
int data[MAXSIZE]; //数组开始明确指定元素个数,会浪费空间
int length;
}SqList;
void CreateSqList(SqList *&L)
{
int i,node,n;
L=(SqList *)malloc(sizeof (SqList));
cin>>n;
for(i=0;i<n;i++)
{
cin>>node;
L->data[i]=node;
}
L->length=n;
}
int main()
{
SqList *L; 
CreateSqList(L) ;
DispSqList(L); 
}
View Code

 

转载于:https://www.cnblogs.com/linli069/p/6557849.html

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值