C语言 压栈的最简单实现

刚开始学数据结构还有很多没能理解,代码中少了很多功能(出栈操作,判断栈空...数组实现栈的功能也可以尝试)先这么写了,之后会陆续更新!

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




typedef struct Node //定义节点
{
int data;
struct Node *link;
}Node,* PNode;


typedef struct Stack //定义栈结构体
{
PNode top;
PNode bottom;
}Stack, * PStack;
//函数声明
void DispStack(PStack pS);
void InitStack(PStack pS);
void PushStack(PStack pS,int n);
int main()
{
Stack S;
int n;
scanf("%d",&n);
//printf("%d\n",n);
InitStack(&S);//栈的初始化
//printf("%d",__LINE__);//调试使用验证段错误所在
PushStack(&S,n);//压栈操作
//printf("%d",__LINE__);
DispStack(&S);//显示栈顶数据
//printf("%d",__LINE__);
}


void InitStack(PStack pS)
{
/*
下面一段代码在写入的时候首尾指针都没有分配空间,没有建立节点,最后导致bottom不能指向栈底元素
//pS->top=(PNode)malloc(sizeof(Node));
//给top分配空间这边可以不用分配空间,因为未给top以及 ps中具体写入数据,只用到了指针具体的pS以及top都可以不需要malloc,不会出现断错误。
pS->top = NULL;//使栈顶其实时候指向空NULL为内存的0地址
pS->bottom = pS->top;//无实际作用
//printf("%d",__LINE__);
*/
//上面代码实现没有指针指向底部,下面代码在实现时插入开头会多出一个节点
pS->top=(PNode)malloc(sizeof(Node));
//pS->top->link = NULL;
pS->bottom = pS->top ;
pS->bottom->link = NULL;

}


void PushStack(PStack pS,int n)//押栈操作
{
//PNode ptr;
PNode ptr = (PNode)malloc(sizeof(Node));//用到data必须给出空间malloc
ptr->link = pS->top;
pS->top = ptr;
ptr->data = n;
}


void DispStack(PStack pS)
{
printf("%d",__LINE__);//调试
printf("%d\t",pS->top->data);
printf("%d",__LINE__);//调试
/*
do
{

}while(top = bottom)
*/
printf("\n");
}

作为数据结构的初始学习,以上这个代码可以说是功能相当欠缺的!后面跟新出新的完善代码!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值