#include<stdio.h>
#include<stdlib.h>
//动态分配单链表的增删改查
typedef struct lnode1{
int *data;
int maxsize;
int length;
}lnode1;
void kuorong(lnode1 &l){
//默认每次扩容十个
l.data=(int*)malloc(sizeof(int)*10);
l.length=0;
}
void chuangjian(lnode1 &l){
l.length=0;
l.maxsize=50;
for(int i=0;i<50;i++){
l.data[i]=i;
l.length++;
}
}
void printlist(lnode1 l){
for(int i=0;i<l.length;i++)
printf("123") ;
printf("\n");
}
int main(){
lnode1 l;
kuorong(l);
chuangjian(l);
printf("%d",l.length);
printlist(l);
return 0;
}
该代码无法输出运行结果什么都没有,有没有大佬知道怎么解决
你这是用的C还是C++??
我这边跑了一下
C的话啥都没有,因为有错误
C++的话我这边可以运行但是很奇怪,你自己再检查一下吧
数组越界,你第一个函数只给了l.data分配了10个Int,但是你第二个函数里面for循环i怎么能取到50呢?
还有使用malloc后不free的话会内存泄漏
额,我帮你稍微改了一下
#include<stdio.h>
#include<stdlib.h>
typedef struct lnode1 {
int* data;
int maxsize;
int length;
}lnode1;
void kuorong(lnode1 &l) {
l.data = (int*)malloc(sizeof(int) * 50);
l.length = 0;
}
void chuangjian(lnode1 &l) {
l.length = 0;
l.maxsize = 50;
for (int i = 0; i < 50; i++) {
l.data[i] = i;
l.length++;
}
}
void printlist(lnode1 l) {
for (int i = 0; i < l.length; i++) {
printf("123");
printf("\n");
}
}
int main() {
lnode1 l;
kuorong(l);
chuangjian(l);
printf("l.length = %d\n", l.length);
printlist(l);
free(l.data);
return 0;
}
而且,这玩意是单链表???写的奇奇怪怪的,还是推荐用指针,写个完整的增删查改就明白了
谢谢大佬们