我用vs2010实现链栈的基本操作,最后我想打印出所有元素,为什么出来的是乱码啊

我用vs2010实现链栈的基本操作,最后我想打印出所有元素,为什么出来的是乱码啊

img

img

img

你的代码错误很多,你的节点都是往链表前面插入的,如果不带头节点,初始化函数就没有任何意义了。
带头和不带头的代码都给你写了,如下:
带头节点的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct LinkStack
{
    struct LinkStack* next;
    ElemType data;
}LS;

//初始化
LS* InitStack(LS* s)
{
    s = (LS*)malloc(sizeof(LS));
    s->next = 0;
    return s;
}
//打印所有元素
void my_printf(LS* s)
{
    LS* p;
    if (s == 0)
    {
        printf("链表为空\n");
        return;
    }
    p = s->next;
    while (p)
    {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}

//入栈
void PushStack(LS* s, ElemType x)
{
    LS* p = (LS*)malloc(sizeof(LS));
    p->data = x;
    p->next = s->next;
    s->next = p;
}
//出栈
void PopStack(LS* s)
{
    LS* p;
    if (s == 0 && s->next == 0)
    {
        printf("栈为空\n");
        return ;
    }
    p = s->next;
    s->next = p->next;
    free(p);
}

int main()
{
    LS* s=0;
    s = InitStack(s);
    PushStack(s, 2);
    PushStack(s, 4);
    PushStack(s, 3);
    my_printf(s);
    return 0;
}

不带头的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct LinkStack
{
    struct LinkStack* next;
    ElemType data;
}LS;


//打印所有元素
void my_printf(LS* s)
{
    LS* p;
    if (s == 0)
    {
        printf("链表为空\n");
        return;
    }
    p = s;
    while (p)
    {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}

//入栈
LS* PushStack(LS* s, ElemType x)
{
    LS* p = (LS*)malloc(sizeof(LS));
    p->data = x;
    p->next = s;
    return p;
}
//出栈
LS* PopStack(LS* s)
{
    LS* p;
    if (s == 0 )
    {
        printf("栈为空\n");
        return 0;
    }
    p = s->next;
    free(s);
    s = p;
    return s;
}

int main()
{
    LS* s=0;
    //s = InitStack(s);
    s = PushStack(s, 2);
    s = PushStack(s, 4);
    s = PushStack(s, 3);
    my_printf(s);
    return 0;
}

只能乱码,问题不少。

其他程序也乱码吗,如果不是那应该是入栈出栈的部分有问题

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632