C语言(数据结构)顺序表的初始化

以下是我写的两个顺序表的小程序,可是我有点迷糊了,顺序表的初始化,需不需要申请结点空间呀?我觉得申请了好像没什么用啊?程序一(申请了结点空间)#include<stdio... 以下是我写的两个顺序表的小程序,可是我有点迷糊了,顺序表的初始化,需不需要申请结点空间呀?我觉得申请了好像没什么用啊?
程序一(申请了结点空间)

#include<stdio.h>
#include"malloc.h"
#define MAX 50

typedef struct
{ int data[MAX];
int length;

}Sqlist;
//顺序表的初始化
Sqlist InitSqlist()
{
Sqlist *a;
a=(Sqlist *)malloc(sizeof(Sqlist));//这里申请了结点空间
a->length=0;
return *a;
}

int Listinsert(Sqlist &L,int i,int e)
{
int j;
if(i<1||i>L.length+1) return 0;
for(j=L.length-1;j>=i-1;j--)
L.data[j+1]=L.data[j];
L.data[i-1]=e;
L.length++;
return 1;
}
void main(){
Sqlist L;
L=InitSqlist();
//测试插入
printf("测试插入");
Listinsert(L,1,12);
}

程序二(未申请结点空间):

#include<stdio.h>
#include"malloc.h"
#define MAX 50

typedef struct
{ int data[MAX];
int length;

}Sqlist;

//顺序表的初始化(这里边没有申请结点空间)

Sqlist InitSqlist()
{
Sqlist a;
a.length=0;
return a;
}

int Listinsert(Sqlist &L,int i,int e)
{
int j;
if(i<1||i>L.length+1) return 0;
for(j=L.length-1;j>=i-1;j--)
L.data[j+1]=L.data[j];
L.data[i-1]=e;
L.length++;
return 1;
}
void main(){
Sqlist L;
L=InitSqlist();
//测试插入
printf("测试插入");
Listinsert(L,1,12);

}

为何这两个程序测试都没有错误呀?顺序表到底需不需要申请结点空间呀?
展开
 我来答
百度网友1fc36d4
2012-09-20 · TA获得超过3128个赞
知道大有可为答主
回答量:1497
采纳率:100%
帮助的人:1815万
展开全部
SeqList *Init_SeqList(){/*定义一个函数,用于初始化顺序表*/
SeqList *L;/*定义一个顺序表指针*/
L=(SeqList *)malloc(sizeof(SeqList));/*给指针分配空间,大小为顺序表节点需要的字节数*/
L->last = -1;/*初始化last的初始值为-1*/
return L;/*返回指针*/
}
main(){/*主函数入口*/
SeqList *L;/*定义顺序表指针*/
L=Init_SeqList();/*调用初始化函数返回生成的顺序表指针*/
……
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Frank_Zhou991
2017-10-03 · TA获得超过421个赞
知道小有建树答主
回答量:385
采纳率:88%
帮助的人:165万
展开全部
C数据结构的基础是指针。好好花上几天时间把指针搞懂再来学数据结构会事半功倍。

#include <stdlib.h>
#include <stdio.h>
#define MAX_SIZE 100
#define OK 0
#define ERROR -1

typedef struct tagSqList
{
int element[MAX_SIZE];
unsigned size;
} SqList;

int Initial(SqList *pL) // 定义指针变量用*,&在C里面是用来取地址的
{
// 通过指针变量访问结构体中的字段,应该使用->运算符,而不是通常的点运算符
pL->size = 0;

return OK;
}

int main(void)
{
SqList L;
Initial(&L); // 把变量的地址传递给指针形参
printf("%d\n", L.size);
return OK;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式