栈的应用(插入一个元素,删除栈顶元素,输出栈元素)数据结构

本文介绍了如何用C语言实现顺序栈的基本操作,包括初始化、压栈、弹栈和输出栈元素,以及设计了一个主程序来处理用户输入,进行栈的操作演示。
摘要由CSDN通过智能技术生成

一、实验目的:

1、掌握栈的特点(先进后出 FILO)及基本操作,如入栈、出栈等。

2、利用栈的特点解决实际问题,提高编程能力。

二、实验内容

编程实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:

1、初始化顺序栈;

2、给定一个元素,将此元素压入此栈中;

3、将栈顶一个元素弹出此栈。

三、源程序

#include<stdio.h>

#include<stdlib.h>

typedef int elemtype;

#define maxsize 3//定义栈中元素的最大个数

typedef struct

{

    elemtype* elem; //元素

    int top; //栈顶指针

    int size;

}sqstack;

int initstack(sqstack& s)//初始化顺序栈

{

    s.elem = (elemtype*)malloc(maxsize * sizeof(elemtype*));//给每个数据元素分配连续的存储空间

    s.top = 0;

    s.size = maxsize;

    return 1;

}

int push(sqstack& s, elemtype& e)//压栈

{

    if (s.top==maxsize) //判断栈满

    {

        printf("栈满,不能入栈\n");

        return 0;

    }

    s.elem[s.top] = e; //新元素入栈

    s.top++;//指针+1

    return 1;

}

int pop(sqstack& s, elemtype& e)//弹栈

{

    if (s.top==0) //判断栈空

    {

        printf("栈空,无元素出栈\n");

        return 0;

    }

    s.top--;//栈顶元素-1

    e = s.elem[s.top]; //栈顶元素出栈

    return 1;

}

void output(sqstack& s)//输出

{

    elemtype e;

    while (s.top!=0) //栈顶不为空

    {

        s.top--;

        e = s.elem[s.top];

        printf("%d\t", e);

    }

    printf("\n");

}

void main()

{

    sqstack s;

    elemtype e;

    initstack(s);

    int t;

    do

    {

        printf("\n主菜单\n");

        printf("1 插入一个元素");

        printf("2 删除栈顶元素");

        printf("3 输出栈元素");

        printf("4 结束程序运行");

        printf("\n--------------------------------\n");

        printf("请输入你的选择(1,2,3,4):");

        scanf_s("%d", &t);

        switch (t)

        {

        case 1:scanf_s("%d", &e); push(s, e); break;

        case 2:pop(s, e); break;

        case 3:output(s); break;

        case 4:exit(0);

        }

    } while (t <= 4);

}

四、运行结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值