gpt4 book ai didi

c - 用作指针的队列

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:57 25 4
gpt4 key购买 nike

我正在为我的 uni 练习编码,目前我们正在学习 C 中的队列。这个练习是关于用列表实现的队列。

typedef struct cvor{ //elements of a list
double broj; //number
struct cvor *sljed; //pointer to next element
}cvor;

typedef struct red{ //queue realised with a list
cvor *ulaz; //enter pointer
cvor *izlaz; //exit pointer
}red;

我有两个功能。初始化队列并将元素添加到队列:

void init_red(red *red);
int dodaj_u_red(double broj, red *red);

在我的主函数中,我首先将变量 red 初始化为一个指针,因此我的程序根本无法运行。我调试了它,当它到达 init_red(red) 时它崩溃了。如果队列是指针,我无法理解为什么代码不起作用。

void init_red(red *red){
red->ulaz = NULL;
red->izlaz = NULL;
}

int dodaj_u_red(double broj, red *red){
cvor *novi; //novi means new
if( (novi = malloc(sizeof(cvor)))){ //checking for error

novi->broj = broj;
novi->sljed = NULL;

if(red->izlaz == NULL) red->izlaz = novi;
else (red->ulaz)->sljed = novi;

red->ulaz = novi;

return 1;
}
return 0;
}

主要功能是

int main(void){

red red; //if I change this is *red and I change argument parameters
double broj; //from &red to red the program doesn't work

int n, i;
printf("Upisite koliko brojeva zelite dodati u listu: ");
do{
scanf("%d", &n);
if(n > 10 || n < 0){
printf("Pogresna velicina broja. Broj mora biti izmedu 1 i 10.");
}
}while(n > 10 || n < 0);

init_red(&red);

for( i = 0; i < n; i++){

printf("Upisi %d clan: ", i+1);
scanf("%lf", &broj);
if( !(dodaj_u_red(broj, &red))) return 1;
printf("Novi clan je: %lf.\n", (red.ulaz)->broj);

}

return 0;
}

无法运行的主要功能版本。 (到达 init_red(red) ; 行时崩溃)

int main(void){

red *red;
double broj;

int n, i;
printf("Upisite koliko brojeva zelite dodati u listu: ");
do{
scanf("%d", &n);
if(n > 10 || n < 0){
printf("Pogresna velicina broja. Broj mora biti izmedu 1 i 10.");
}
}while(n > 10 || n < 0);

init_red(red);

for( i = 0; i < n; i++){

printf("Upisi %d clan: ", i+1);
scanf("%lf", &broj);
if( !(dodaj_u_red(broj, red))) return 1;
printf("Novi clan je: %lf.\n", (red.ulaz)->broj);

}

return 0;
}

最佳答案

您没有为 *red 分配任何内存。
将该行更改为

red *red = (red*)malloc(sizeof(red));

关于c - 用作指针的队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50658613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com