如何将 typedef 结构用于 FIFO?
How do you use a typedef struct for a FIFO?
我刚开始在学校用 C 编程。我被要求编写一个使用 FIFO 结构来解决数学问题的程序。我在互联网上获得了 FIFO 的以下代码,我只是不知道如何使用它。我尝试了很多东西,但在互联网上找不到任何有用的东西,或者我只是不知道研究的正确方法,但你能帮帮我吗?谢谢!
#include <stdio.h>
#include <stdlib.h>
typedef struct pile
{
int donnee;
struct pile *precedent;
} Pile;
void pile_push(Pile **p_pile, int donnee)
{
Pile *p_nouveau = malloc(sizeof *p_nouveau);
if (p_nouveau != NULL)
{
p_nouveau->donnee = donnee;
p_nouveau->precedent = *p_pile;
*p_pile = p_nouveau;
}
}
int pile_pop(Pile **p_pile)
{
int ret = -1;
if (p_pile != NULL)
{
Pile *temporaire = (*p_pile)->precedent;
ret = (*p_pile)->donnee;
free(*p_pile), *p_pile = NULL;
*p_pile = temporaire;
}
return ret;
}
void pile_clear(Pile **p_pile)
{
while (*p_pile != NULL)
{
pile_pop(p_pile);
}
}
我试过这样做:
int main()
{
int return_val;
Pile pile;
pile_push(Pile, 5);
return_val = pile_pop(Pile);
printf(return_val);
}
并收到此错误:
expected expression before 'Pile'
too few arguments to function 'pile_push'
您混淆了 Pile
和 pile
,这是第一个警告的问题。这些函数需要一个指向 Pile 的指针。即:它们更新了指针的值,因此需要向它们传递一个指针的引用。您对 printf 的使用也是错误的。
int main()
{
int return_val;
Pile *pile = NULL;
pile_push(&pile,5);
return_val = pile_pop(&pile);
printf("return_val is: %d\n",return_val);
}
我刚开始在学校用 C 编程。我被要求编写一个使用 FIFO 结构来解决数学问题的程序。我在互联网上获得了 FIFO 的以下代码,我只是不知道如何使用它。我尝试了很多东西,但在互联网上找不到任何有用的东西,或者我只是不知道研究的正确方法,但你能帮帮我吗?谢谢!
#include <stdio.h>
#include <stdlib.h>
typedef struct pile
{
int donnee;
struct pile *precedent;
} Pile;
void pile_push(Pile **p_pile, int donnee)
{
Pile *p_nouveau = malloc(sizeof *p_nouveau);
if (p_nouveau != NULL)
{
p_nouveau->donnee = donnee;
p_nouveau->precedent = *p_pile;
*p_pile = p_nouveau;
}
}
int pile_pop(Pile **p_pile)
{
int ret = -1;
if (p_pile != NULL)
{
Pile *temporaire = (*p_pile)->precedent;
ret = (*p_pile)->donnee;
free(*p_pile), *p_pile = NULL;
*p_pile = temporaire;
}
return ret;
}
void pile_clear(Pile **p_pile)
{
while (*p_pile != NULL)
{
pile_pop(p_pile);
}
}
我试过这样做:
int main()
{
int return_val;
Pile pile;
pile_push(Pile, 5);
return_val = pile_pop(Pile);
printf(return_val);
}
并收到此错误:
expected expression before 'Pile'
too few arguments to function 'pile_push'
您混淆了 Pile
和 pile
,这是第一个警告的问题。这些函数需要一个指向 Pile 的指针。即:它们更新了指针的值,因此需要向它们传递一个指针的引用。您对 printf 的使用也是错误的。
int main()
{
int return_val;
Pile *pile = NULL;
pile_push(&pile,5);
return_val = pile_pop(&pile);
printf("return_val is: %d\n",return_val);
}