我的数据结构出错[STACK]

时间:2018-03-22 18:00:01

标签: c list data-structures

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

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

由于我还是初学者,我一般都很难看到,但我认为方法是正确的,也许这是一个语法错误。

  

Ligacacao * topo - [错误]未知类型名称' Ligacacao'

     

Ligacacao pnovo =(Ligacacao )malloc(sizeof(Ligacacao)); - [错误]' Ligacacao'未申报(首次使用此功能)

#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);
}

2 个答案:

答案 0 :(得分:2)

我认为你错误地解释了你的结构。也许试试这个:

ffmpeg -f dshow -i video="Integrated Webcam" -c:v rawvideo -pix_fmt yuv420p -window_size qcif -f sdl "SDL output"

此外,您可能会发现此问题:typedef struct Ligacacao { char hora[MAX]; int numero; struct Ligacacao *prox; } Ligacacao; 最后一个反斜杠可能不应该存在,或者你可能想要另外一个&#39;之后换另一个标签字符。

答案 1 :(得分:1)

错误1(第21行):

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

应该是:

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

错误2(第39行):

pnovo->prox = topo;

应该是:

pnovo->prox = topo->prox;

错误3(第52行):

topo = topo->prox;

错误但无法分配给自己:

topo->prox= topo->prox;

错误4(第63行):

aux = aux->prox;

同样在这里。

错误5(第72行):

printf("\t\t\Ligacoes");

应该是:

printf("\t\t\tLigacoes");

或:

printf("\t\tLigacoes");