嗷呜一口大黄 2022-01-02 16:42 采纳率: 50%
浏览 19

为什么我的输出是empty,链栈不是加了1了吗



#include<stdio.h>
#include<stdlib.h>
#define maxsize 11

typedef struct Stacklink{
    int data;
    struct Stacklink* next;
}stacklink;

void pushlink(stacklink* s, int x);
void readlink(stacklink* s);
int main() {

    stacklink* head=NULL;
    pushlink(head, 1);
    readlink(head);
    return 0;
}


void pushlink(stacklink* s, int x) {
    stacklink* p;
    p = (stacklink*)malloc(sizeof(stacklink));
    p->data = x;
    if (s == NULL) { p->next = NULL; }
    else { p->next = s; }
    s = p;
}
void readlink(stacklink* s) {
    if (s == NULL) { printf("erro:empty"); return; }
    else {
        stacklink* p=s;
        while (p != NULL) {
            printf("%d\n", p->data);
            p = p->next;
        }
    }
}


```

  • 写回答

1条回答 默认 最新

  • fuill 2022-01-02 23:03
    关注

    加一句s= (stacklink*)malloc(sizeof(stacklink));

    #include<stdio.h>
    #include<stdlib.h>
    #define maxsize 11
    typedef struct Stacklink {
        int data;
        struct Stacklink* next;
    } stacklink;
    void pushlink(stacklink* s, int x);
    void readlink(stacklink* s);
    int main() {
        stacklink* head=NULL;
        pushlink(head, 1);
        readlink(head);
        return 0;
    }
    
    void pushlink(stacklink* s, int x) {
        stacklink* p;
        p = (stacklink*)malloc(sizeof(stacklink));
        p->data = x;
        if (s == NULL) {
            p->next = NULL;
        }
        else {
            p->next = s;
        }
        s = p;
    }
    void readlink(stacklink* s)
    {
        s=(stacklink*)malloc(sizeof(stacklink));
        if (s == NULL) {
            printf("erro:empty");
            return;
        }
        else {
            stacklink* p=s;
            while (p != NULL) {
                printf("%d\n", p->data);
                p = p->next;
            }
        }
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月2日