数据结构顺序表输出问题
学习数据结构写了一段代码想实现数据表,在主函数中加了一个循环想输出一下表内的数据,但是运行的结果没有输出数据,代码不知道哪里有问题。希望高人指点
运行后终端显示如下
PS E:\C项目\SeqList> cd "e:\C项目\SeqList\" ; if ($?) { gcc SeqList.c -o SeqList } ; if ($?) { .\SeqList }
(然后就没了)
代码如下:
#include<stdio.h>
#include<stdlib.h>
#define InitSize 100
typedef struct{
int *data;
int MaxSize, length;
} SeqList;
void InitList(SeqList L){
L.data = (int *)malloc(InitSize * sizeof(int));
L.length = 0;
L.MaxSize = InitSize;
}
void IncreaseSize(SeqList L,int len)
{
int *p = L.data;
L.data = (int *)malloc((L.MaxSize + len) * sizeof(int));
for (int i = 0; i < L.length;i++)
{
L.data = p;
}
L.MaxSize = L.MaxSize + len;
free(p);
}
int main()
{
SeqList L;
InitList(L);
for (int i = 0; i < 5;i++)
{
L.data = 2*i;
}
IncreaseSize(L, 5);
for (int i = 0; i < 5;i++)
{
printf("%d", L.data);
}
printf("MaxSize is :%d", L.MaxSize);
return 0;
} 本帖最后由 yuxijian2020 于 2021-4-19 11:25 编辑
你传参传的不是指针,值传递的话,传入的参数不会有什么改变 #include<stdio.h>
#include<stdlib.h>
#define InitSize 100
typedef struct {
int* data;
int MaxSize, length;
} SeqList;
void InitList(SeqList *L) {
L->data = (int*)malloc(InitSize * sizeof(int));
L->length = 0;
L->MaxSize = InitSize;
}
void IncreaseSize(SeqList *L, int len)
{
int* p = L->data;
L->data = (int*)malloc((L->MaxSize + len) * sizeof(int));
for (int i = 0; i < L->length; i++)
{
L->data = p;
}
L->MaxSize = L->MaxSize + len;
free(p);
}
int main()
{
SeqList L;
InitList(&L);
for (int i = 0; i < 5; i++)
{
L.data = 2 * i;
L.length++;
}
IncreaseSize(&L, 5);
for (int i = 0; i < 5; i++)
{
printf("%d", L.data);
}
puts("");
printf("MaxSize is :%d", L.MaxSize);
return 0;
} {:10_334:} wwhdx 发表于 2021-4-19 11:22
#include
#include
#define InitSize 100
大佬,我按照你的改之后,它会显示结构体内的语句有问题。
说:表达式必须具有结构或联合类型,但是它具有类型“SeqList” them0b 发表于 2021-4-19 14:04
大佬,我按照你的改之后,它会显示结构体内的语句有问题。
说:表达式必须具有结构或联合类型,但是它具 ...
标黄的是重点,注意还有一些其他的细节,比如指针访问结构体成员的方式也要改
页:
[1]