(数据结构初学者)求助

用clion写的代码,双向链表实现的链栈,但是弹出栈顶元素永远是0。

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

typedef struct DSNode{
    int data;
    struct DSNode *last;
    struct DSNode *next;
}DSNode;
typedef struct DStack{
    struct DSNode *head,*tail;
}DStack,* DSTack;
bool InitDStack(DSTack &S)
{
    S = (DStack*)malloc(sizeof(DStack));
    DSNode *p=(DSNode*)malloc(sizeof(DSNode));
    p->last=NULL;
    p->next=NULL;
    S->head=p;
    S->tail=p;
    return true;
}
bool StackEmpty(DSTack S)
{
    if(S->tail==S->head)
        return true;//此时栈为空
    else
        return false;//此时栈不为空
}
bool push(DSTack &S,int n)
{
    DSNode *q=(DSNode*)malloc(sizeof(DSNode));
    q->data=n;
    q->next=NULL;
    q->last=S->tail;
    S->tail->next=q;
    S->tail=q;
    return true;
}
bool pop(DSTack &S,int  &n)
{
    if (StackEmpty(S))
        return false;
    DSNode *t=S->tail;
    n=S->tail->data;
    S->tail=t->last;
    S->tail->next=NULL;
    free(t);
    return true;
}

void print(DSTack S)
{
    while(S->tail!=S->head)
    {
        printf("%d",S->tail->data);
        S->tail=S->tail->last;
    }
}

int main() {
     DSTack S;
    int x;
    InitDStack(S);
    push(S,1);
    push(S,3);
    push(S,5);
    push(S,7);
    print(S);
    printf("\n");
    pop(S,x);
    printf("%d",x);
    return 0;
}

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 是一种易于学习且功能强大的编程语言,非常适合初学者入门。对于初学者来说,可以从创建和运行简单的代码开始。例如,你可以从以下几个步骤入手: 1. 安装 Python:访问 Python官网 (https://www.python.org/downloads/) 下载适合你的操作系统版本。 2. 学习基础语法:了解变量、数据类型(如整数、字符串、列表等)、条件语句(if-else)、循环(for和while)以及函数的基本概念。 3. 编写第一个程序:尝试编写一个"Hello, World!"程序,这是学习任何编程语言的常见起点。 ```python print("Hello, World!") ``` 4. 初步使用控制结构:创建一些交互式的代码,比如用户输入和基本的输入验证。 5. 学习标准库和模块:Python有许多内置的库,如`math`、`os`等,用于处理数学运算和系统操作。学习如何导入并使用它们。 6. 实战项目:选择一个小项目,如制作一个简单的计算器、猜数字游戏或文本分析,来应用所学知识。 初学者论坛推荐: - Stack Overflow(https://stackoverflow.com/questions/tagged/python):这是一个问题解答社区,你可以在遇到问题时查找答案,也可以提问求助。 - Reddit的r/learnpython(https://www.reddit.com/r/learnpython/):Reddit上的讨论区,有很多新手资源和经验分享。 - Python官方文档(https://docs.python.org/3/tutorial/index.html):官方提供详尽的教程,适合自学。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值