栈的实现(C语言)

栈的实现(C语言)

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

最近翻看大学时候的资料,发现了当时写的C语言栈的简单实现,分享一下,有问题的地方希望慷慨指出,共同学习。

代码结构如下:

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

//节点数据类型定义
typedef struct Node
{
    int data;
    struct Node * next;
}NODE,* PNODE;

//栈数据类型定义
typedef struct Stack
{
    PNODE top;
    PNODE base;
}STACK,* PSTACK;

/*函数声明*/
void InitStack(PSTACK S);   //初始化栈
void PushStack(PSTACK S,int val);   //压栈
void PopStack(PSTACK S,int &val);   //出栈
void TraverseStack(PSTACK S);   //遍历栈

//测试函数
int main(void)
{
    int pop,n,i,push;                 //pop代表出栈的值,push代表压栈的值,
                                      //n为用户选择要压栈的个数i用于迭代
    STACK S;
    InitStack(&S);
    printf("你想在栈中压入多少个整数值? ");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {  
        do
        {
        }while(getchar()!='\n');             //获取用户多余的输入
        printf("请输入值:");
        scanf("%d",&push);
        PushStack(&S,push);
    }
    printf("栈中元素的遍历结果:");
    TraverseStack(&S);
    for(i=0;i<n;i++)
    {
        PopStack(&S,pop);
        printf("出栈的是:%d\n",pop);
    }
    return 0;
}

代码下载地址:完整代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值