精华内容
下载资源
问答
  • 这套资料主要是用于学习SeqStack顺序栈的源代码
  • 本程序通过C++实现数据结构中顺序栈,主要功能有压栈、弹栈、遍历、栈空间拓展等,具体功能函数如下: MStack(int tCapacity,bool& flag); ~MStack(); void Clear(); bool Empty() const; bool Push(ElemType&)...
  • 本资源为顺序栈的代码和运行exe文件,里面包含的操作为1:初始化顺序栈2:销毁栈3:清空栈4:栈是否为空5:返回栈顶元素6:插入元素到栈中7:删除栈顶元素,并返回8:当前栈元素个数\
  • 顺序栈的基本操作实现 实验要求: (1)建立含有若干个元素的顺序栈; (2)对已建立的顺序栈实现判空、进栈、出栈、取栈顶元素等基本操作; (3)在主函数中调用栈的基本操作函数实现输入序列的反转。
  • 上机环境VC++6.0 二 程序设计相关信息 实验题目编写一个程序实现顺序栈假设栈中元素类型为 char的各种 基本运算并在此基础上设计一个程序完成如下功能 1 初始化栈 2 判断栈是否为空 3 依次进栈元素a,b,c,d,e 4 判断...
  • 使用顺序栈实现括号匹配
  • 顺序栈ADT数据结构代码,注释多,适合初学或者作业学习,用C语言实现,在VisualStudio写的,可以直接将文件添加进工程,在控制台查看效果
  • 实验三 顺序栈的实现 实验类型 验证性 实验学时2学时 一实验目的 掌握顺序栈的基本操作如进栈出栈判断栈空和栈满取栈顶元素等运算在顺序存储结构上的运算并能够运用栈的基本操作解决问题实现相应算法 二实验要求 ...
  • c顺序栈解决符号匹配

    2019-12-01 10:28:57
    c语言顺序栈 解决符号匹配问题
  • 自己定义的栈的接口,完全是按照栈的常用方法以及命名方式实现: 注意以下类,接口都是在一个命名空间下 ...顺序栈的实现,参照顺序表实现 namespace 栈 { class SeqStack<T> : IStackDS { pr
  • 设计一个算法,用一个栈s将-一个队列Q逆置: (1)要求采用顺序栈和循环队列来实现。 (2)要求采用链栈和链队列来实现。
  • 使用两个,stack0用于存储操作数,stack1用于存储操作符 从左往右扫描,遇到操作数入栈stack0 遇到操作符时,如果优先级低于或等于栈顶操作符优先级,则从stack0弹出两个元素进行计算,并压入stack0,继续与栈顶...
  • C语言实现顺序栈.c

    2020-06-22 23:40:54
    C语言实现顺序栈 顺序栈的常规操作 Stack InitStack(); // 初始化栈 int StackFull(); // 判断栈满 int StackEmpty(); // 判断栈空 int StackLength(); // 求栈长(栈元素个数) int Push(); ...
  • #include<stdio.h> #include<malloc.h> #define MAXSIZE 100 typedef int DataType; typedef struct stack { DataType data[MAXSIZE];... sqstack *InitStack(sqstack *S)//顺序栈的初始化 { S->top=-1; r
  • (5) 实验心得 实验课成绩=考勤成绩(10)+ 实验报告成绩(20) 实验报告共收4份实验报告 数据结构实验 实验二 顺序栈的建立及基本操作 实验目的 了解顺序栈的结构特点及有关概念 掌握顺序栈建立及基本操作算法 实验二 ...
  • 顺序栈相关算法

    2019-08-25 14:09:28
    1、 定义顺序栈类。 2、 实现如下算法: 1)创建顺序栈; 2)插入操作:向栈顶压入值为 x 的元素; 3)删除操作:弹出栈顶元素,将数据输出在屏幕上; 4)存取操作:读取栈顶元素,将数据输出在屏幕上;。 3、 为了...
  • 封面 学 生 实 验 报 告 学 院 国际经贸学院 课程名称 数据结构 专业班级 09 电子商务 姓 名 学 号 学生实验报告 经管类专业用 学生姓名 学号 同组人 实验项目 顺序栈基本实验 必修 选修 演示性实验 验证性实验 操作...
  • 实现顺序栈,并利用该栈完成进制转换
  • 使用顺序表实现的 对应于数据机构与算法分析(c++版)第三版或第二版 Clifford A.Shaffer 重庆大学使用教材
  • 顺序栈实现算术表达式的计算 输入格式:一行一个算术表达式,可以输入若干行 输出格式:一行一个输出结果 样例: 输入样例: 2*(3 + 4) 6+ 2 * 8 /4 输出样例 14 10 【基本要求】运算对象均为整数 【选作内容】...
  • 顺序栈实现

    2015-05-27 15:34:06
    顺序栈是栈的一种类型,这里采用C++的模板来实现顺序栈
  • 顺序栈的实现.zip

    2020-03-10 11:51:48
    这个程序实现了顺序栈的初始化,入栈,出栈、取顺序栈的顶栈元素,退出的作用。/***顺序栈的实现***/ #include #include using namespace std; //顺序栈定义 #define OK 1 #define ERROR 0 #define ...
  • 注:分为四个内容:顺序栈、链栈、循环队列、链队列。代码由C++程序设计语言编写,包含栈和队列的基本操作(栈:出、入、取、判空等|队列:出、入、取、打印队列、判空等),并展示了三个具体的使用例子,包括用栈求...
  • 顺序栈基本操作

    2017-03-04 16:03:26
    数据结构 顺序栈基本操作
  • 顺序栈和链栈操作

    2016-12-16 16:09:49
    栈的操作,顺序栈和链栈的操作.数据结构基础.
  • 实验五顺序栈的实现 一实验目的 通过实验掌握栈的逻辑结构特点 掌握初始化栈判断空入栈出栈取栈顶元素等基本操作算法 二实验内容 从键盘输入一串字符串用程序实现此字符串的逆序输出
  • 数据结构课程中顺序栈和链栈的操作实现,实现语言为C语言
  • 数据结构-基本算法-顺序栈(学生时代源码,调试可运行)
  • 顺序栈

    2020-04-04 16:35:50
    1. 什么叫顺序栈 百度百科中的定义如下 顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈。采用地址连续的存储空间(数组)依次存储栈中数据元素,由于人栈和出栈运算都是在栈顶进行,而栈底位置是固定不变...

    1. 什么叫顺序栈

    百度百科中的定义如下

    顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈。采用地址连续的存储空间(数组)依次存储栈中数据元素,由于人栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置是随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置

    解释
    栈的元素依次存放在一个一维数组中。下标小的一端作为栈底。用一个变量记录栈顶位置,称“栈顶指针”。

    应用
    进栈是把元素存放在栈顶后面一个位置,栈顶往后移;出栈是删除栈顶元素,栈顶往前移。适合栈元素数量比较确定的情况。

    2. 栈的实现

    stack.h

    #ifndef _STACK_H_
    #define _STACK_H_
    
    
    
    
    #include <stdbool.h>
    
    
    
    /* 栈结构 */
    struct stack_struct
    {
        int *top;
        int *bottom;
        int capacity;
    };
    
    
    
    /*
     * 函数名称:creat_stack
     * 功能描述:创建栈
     * 输入参数:capacity-容量
     * 返 回 值:栈结构体指针
     */
     struct stack_struct *creat_stack(int capacity);
    
    
    
    /*
     * 函数名称:stack_is_empty
     * 功能描述:判断栈是否为空
     * 输入参数:stack_t-栈结构体指针
     * 返 回 值:true-空,false-不为空
     */
    bool stack_is_empty(struct stack_struct * stack_t);
    
    
    
    
    
    /*
     * 函数名称:stack_push
     * 功能描述:入栈
     * 输入参数:stack_t-栈结构体指针,data-入栈数据
     * 返 回 值:true-入栈成功,false-入栈失败
     */
    bool stack_push(struct stack_struct *stack_t, int data);
    
    
    
    /* 
     * 函数名称:stack_pop
     * 功能描述:出栈
     * 输入参数:
     */
     bool stack_pop(struct stack_struct *stack_t);
    
    
    /*
     * 函数名称:stack_print
     * 功能描述:遍历栈数据
     * 
     */
     void stack_print(struct stack_struct *stack_t);
    
    
    
     /* 
     * 函数名称:stack_destroy
     * 功能描述:销毁栈
     * 输入参数:栈指针
     */
     void stack_destroy(struct stack_struct *stack_t)
    
    #endif
    

    stack.c

    #include "stack.h"
    #include <stdio.h>
    #include <stddef.h>
    #include <stdlib.h>
    
    
    
    /*
     * 函数名称:creat_stack
     * 功能描述:创建栈
     * 输入参数:capacity-容量
     * 返 回 值:栈结构体指针
     */
     struct stack_struct *creat_stack(int capacity)
     {
         struct stack_struct *stack = (struct stack_struct *)malloc(sizeof(struct stack_struct));
         if(stack == NULL)
            return NULL;
    
        if(stack->bottom == NULL)
        {
            stack->bottom = (int *)malloc(sizeof(int)*capacity);
            if(stack->bottom == NULL)
                return NULL;
        }
    
        stack->top = stack->bottom;
        stack->capacity = capacity;
    
        return stack;
     }
    
    
    
    
     /*
     * 函数名称:stack_is_empty
     * 功能描述:判断栈是否为空
     * 输入参数:stack_t-栈结构体指针
     * 返 回 值:true-空,false-不为空
     */
    bool stack_is_empty(struct stack_struct * stack_t)
    {
        if(stack_t->top == stack_t->bottom)
        {
            return true;
        }
    
        return false;
    }
    
    
    
     /*
     * 函数名称:stack_is_full
     * 功能描述:判断栈是否已满
     * 输入参数:stack_t-栈结构体指针
     * 返 回 值:true-满,false-不满
     */
     bool stack_is_full(struct stack_struct *stack_t)
     {
        if((stack_t->top - stack_t->bottom) >= stack_t->capacity)
        {
            printf("stack is full...\n");
            return true;
        }
    
        return false;
     }
    
    
    
    /*
     * 函数名称:stack_push
     * 功能描述:入栈
     * 输入参数:stack_t-栈结构体指针,data-入栈数据
     * 返 回 值:true-入栈成功,false-入栈失败
     */
    bool stack_push(struct stack_struct *stack_t, int data)
    {
        if(stack_is_full(stack_t) != true)
        {
            *stack_t->top = data;
            stack_t->top++;
    
            return true;
        }
    
        return false;
    }
    
    
    
    /* 
     * 函数名称:stack_pop
     * 功能描述:出栈
     * 输入参数:statck_t-栈指针
     * 返 回 值:true-成功,false-失败
     */
     bool stack_pop(struct stack_struct *stack_t)
     {
         if(stack_is_empty(stack_t) == true)
         {
             printf("stack is empty, pop failed...\n");
             return false;
         }
    
        stack_t->top--;
    
         return true;
     }
    
    
    
    /*
     * 函数名称:stack_print
     * 功能描述:遍历栈数据
     * 输入参数:stack_t-栈指针
     */
     void stack_print(struct stack_struct *stack_t)
     {
         printf("stack[%d]:", stack_t->capacity);
    
        int *tmp_t = stack_t->top;
         while(tmp_t != stack_t->bottom)
         {
             printf("%d ", *(--tmp_t));
         }
    
         printf("\r\n");
     }
    
    
    
    
    /* 
     * 函数名称:stack_destroy
     * 功能描述:销毁栈
     * 输入参数:栈指针
     */
     void stack_destroy(struct stack_struct *stack_t)
     {
         free(stack_t);
     }
    

    main.c

    #include "stack.h"
    #include <stddef.h>
    #include <stdio.h>
    
    int main(void)
    {
        struct stack_struct *stack_t = creat_stack(10);
        if(stack_t == NULL)
            return -1;
    
        int i;
        for(i=0; i<10; i++)
        {
            stack_push(stack_t, i+1);
        }
    
        printf("push:\n");
        stack_print(stack_t);
    
        for(i=0; i<10; i++)
        {
            stack_pop(stack_t);
            printf("pop: %d\n", i+1);
            stack_print(stack_t);
        }
    
        stack_destroy(stack_t);
    
        return 0;
    }
    

    运行结果:

    root@book-virtual-machine:/mnt/hgfs/windows/c/data_struct/data_struct/stack# ./a.out 
    push:
    stack[10]:10 9 8 7 6 5 4 3 2 1 
    pop: 1
    stack[10]:9 8 7 6 5 4 3 2 1 
    pop: 2
    stack[10]:8 7 6 5 4 3 2 1 
    pop: 3
    stack[10]:7 6 5 4 3 2 1 
    pop: 4
    stack[10]:6 5 4 3 2 1 
    pop: 5
    stack[10]:5 4 3 2 1 
    pop: 6
    stack[10]:4 3 2 1 
    pop: 7
    stack[10]:3 2 1 
    pop: 8
    stack[10]:2 1 
    pop: 9
    stack[10]:1 
    pop: 10
    stack[10]:
    root@book-virtual-machine:/mnt/hgfs/windows/c/data_struct/data_struct/stack# 
    

    值得注意的是:
    在 linux 下,申请完 栈结构体内存后,若不额外申请 top指针和bottom指针所指向的内存,top和bottom 为空,对 top 和 bottom 操作时会出现段错误

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 377,808
精华内容 151,123
关键字:

顺序栈