c - 我的数据结构错误 [STACK]

标签 c list data-structures

<分区>

enter image description here我的代码显示两个错误。在我学习的过程中,我尝试了几种方法来修复它。拜托,任何人都可以帮助我吗?

我需要在我的堆栈中插入一个数字和一个字符串。但是你在我的结构中犯了一个错误。

由于我还是个初学者,一般情况下我看不太清楚,但我认为方法是对的,可能是语法错误。

Ligacacao *topo - [Error] unknown type name 'Ligacacao'

Ligacacao pnovo = (Ligacacao)malloc(sizeof(Ligacacao)); - [Error] 'Ligacacao' undeclared (first use in this function)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <ctype.h>
#include <conio.h>

#define MAX 5

typedef struct Ligacacao {
    char hora[MAX];
    int numero;
    struct Ligacacao *prox;
};

char hora[MAX];
int numero;
Ligacacao *topo; //ERRRRRRO


void dados_ligacao() {
    printf("\nEntre com a hora da chamada: ");
    fflush(stdin);
    fgets(hora, MAX, stdin);
    printf("Entre com o numero do telefone: ");
    fflush(stdin);
    scanf("%d", &numero);
}
void push_ligacao() {

    dados_ligacao();
    Ligacacao *pnovo = (Ligacacao*)malloc(sizeof(Ligacacao));//ERRRRRRO
    strcpy(pnovo->hora, hora);
    pnovo->numero = numero;
    pnovo->prox = NULL;
    if (topo == NULL)//se a pilha estiver vazia
        topo = pnovo; //topo recebe o novo elemento
    else {
        pnovo->prox = topo;
        topo = pnovo;
    }
}

void pop_ligacao() {
    Ligacacao *aux;
    if (topo == NULL) {
        printf("\n\nErro, Sem ligacoes.\n\n");
        return;
    }
    else {
        aux = topo;
        topo = topo->prox;
        free(aux);
    }
}

void listar_ligacao() {
    Ligacacao *aux;
    aux = topo;
    while (aux != NULL) {
        printf("\t\t\tDados Ligacao\n\n");
        printf("Numero: %d", aux->numero);
        aux = aux->prox;
    }
}

int main() {
    char op;
    topo = NULL;
    do {
        system("cls");
        printf("\t\t\Ligacoes");
        printf("\n\n(E)mpilhar Ligacacao\n");
        printf("(L)istar Estoque Ligacacaos\n");
        printf("(D)esempilhar Ligacacao\n");
        printf("(S)air do Programa\n\n");
        printf("Digite a opcao: ");
        op = toupper(getche());
        switch (op) {
        case'E': push_ligacao();
            break;
        case'L': listar_ligacao();
            break;
        case'D': pop_ligacao();
            break;
        case'S': exit(0);
        default: printf("\n\nOpcao invalida, digite novamente.\n\n");
        }
        system("PAUSE");
    } while (op != 'S');
    return (0);
}

最佳答案

我认为您输入的结构不正确。也许试试这个:

typedef struct Ligacacao {
    char hora[MAX];
    int numero;
    struct Ligacacao *prox;
} Ligacacao;

此外,您可能会发现以下问题:printf("\t\t\Ligacoes"); 最后一个反斜杠可能不应该存在,或者您可能打算在之后为另一个制表符添加另一个“t”。

关于c - 我的数据结构错误 [STACK],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49435499/

相关文章:

sorting - 如何使用自定义顺序对 kotlin 中的对象数组进行排序?

数组和数组名的C程序地址增量

python - 我怎样才能使这个构造更简单,就像Python中的类或函数一样?

c - c中节点内的树

css - 当窗口大小改变时,垂直列表脱节

python - 如何在 python 中创建列表数组?

java - 是否有一个很好的 Java 对象来保存 2D double 网格?

c - 二叉搜索树指针问题

c - 为什么头文件可以包含自身?

c - C 中函数参数/调用函数的问题