打印指针值

printing a pointer value

我在尝试打印 *p 值时遇到这个问题,而 p 指向列表的节点(显然我想打印 nodo.info 值) 这是代码,希望你能理解:

struct nodo {
    int info;
    struct nodo *prec;
    struct nodo *succ;
} ;
typedef struct nodo nodo;

int main (void) {     // just declaring my 3 nodos
    struct nodo *p;

    struct nodo anodo;
    struct nodo bnodo;
    struct nodo cnodo;

    anodo.info = 200;
    anodo.prec = NULL;
    anodo.succ = NULL;

    bnodo.info = 22;
    bnodo.prec = NULL;
    bnodo.succ = NULL;

    cnodo.info = 2000;
    cnodo.prec = NULL;
    cnodo.succ = NULL;

    anodo.succ = &bnodo;    
    bnodo.prec = &anodo;
    bnodo.succ = &cnodo;    
    cnodo.prec = &bnodo;

    p = &anodo;

    printf("\n%d\n", checklist (p));       // calling function 

    return 0;
}

nodo *checklist (struct nodo *p) {
    int j=0;

    while (p != NULL) {
        if (p->info >= p->succ->info) {     //if first element is major or same than next
            p=p->succ;

        } else {
            while (p != NULL) {
                if (p->info >= p->succ->info) {     //same
                    p=p->succ;
                    j++;
                } else {
                    p = NULL;
                }
            }
        }
    } 

    while (j != 0) {
        p = p->prec;     //used a counter to get back to the first nodo in wich next was less than prev
        j--;
    }

    return p;
}

欢迎询问任何详情

您需要 return nodo.info 然后

int checklist (struct nodo *p) {
    int j=0;

    while (p != NULL) {
        /* avoid this p->succ->info */
        if (p->info >= p->succ->info) {     //if first element is major or same than next
            p = p->succ;
        } else {  
            while (p != NULL) {
                if (p->info >= p->succ->info) {     //same
                    p = p->succ;
                    j++;
                } else { 
                    p = NULL;                        
                }          
            }
        }
    }

    while (j != 0) { p = p->prec;     //used a counter to get back to the first nodo in wich next was less than prev
        j--;
    }
    return p->info;
} 

或在主要

int info
struct nodo *found;

found = checklist(p);
if (found != NULL)
    printf("\n%d\n", found->info);
p = checklist (p);
if (p) 
   printf("\n%d\n", p->info);