当前位置:   article > 正文

栈的应用(插入一个元素,删除栈顶元素,输出栈元素)数据结构_建立一个字符栈,对栈进行插入删除操作,输出栈内元素

建立一个字符栈,对栈进行插入删除操作,输出栈内元素

一、实验目的:

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);

}

四、运行结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/739819
推荐阅读
相关标签
  

闽ICP备14008679号