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);
}
为何这两个程序测试都没有错误呀?顺序表到底需不需要申请结点空间呀? 展开
程序一(申请了结点空间)
#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);
}
为何这两个程序测试都没有错误呀?顺序表到底需不需要申请结点空间呀? 展开
7个回答
展开全部
SeqList *Init_SeqList(){/*定义一个函数,用于初始化顺序表*/
SeqList *L;/*定义一个顺序表指针*/
L=(SeqList *)malloc(sizeof(SeqList));/*给指针分配空间,大小为顺序表节点需要的字节数*/
L->last = -1;/*初始化last的初始值为-1*/
return L;/*返回指针*/
}
main(){/*主函数入口*/
SeqList *L;/*定义顺序表指针*/
L=Init_SeqList();/*调用初始化函数返回生成的顺序表指针*/
……
}
SeqList *L;/*定义一个顺序表指针*/
L=(SeqList *)malloc(sizeof(SeqList));/*给指针分配空间,大小为顺序表节点需要的字节数*/
L->last = -1;/*初始化last的初始值为-1*/
return L;/*返回指针*/
}
main(){/*主函数入口*/
SeqList *L;/*定义顺序表指针*/
L=Init_SeqList();/*调用初始化函数返回生成的顺序表指针*/
……
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询