精华内容
下载资源
问答
  • 顺序 空栈:base== top 满: top-base==stacksize 1.顺序的初始化 Statue InitStack(SqStack &S){ //构造一个空栈 S.base=new SElemType[MAXSIZE]; if(!S.base) exit(OVERFLOW); //存储分配失败 S.top...

    在这里插入图片描述

    顺序栈
    空栈:base== top
    栈满: top-base==stacksize

    顺序栈的表示

    #define MAXSIZE 100
    typedef struct{
    	SElemType *base;     //栈底指针
    	SElemType *top;       //栈顶指针
    	int stacksize;      //栈可用最大容量
    	}SqStack;
    

    1.顺序栈的初始化

    Statue InitStack(SqStack &S){ //构造一个空栈
    	S.base=new SElemType[MAXSIZE];
    	if(!S.base) exit(OVERFLOW)//存储分配失败
    	S.top=S.base;  //栈顶指针等于栈底指针
    	S.stacksize=MAXSIZE;
    	return OK;
    	}
    

    2.判断顺序栈是否为空

    Statue StackEmpty(SqStack S){ //若栈为空,返回TRUE,否则返回FALSE
    	if(S.top==S.base)
    		return TRUE;
    	else
    		return FALSE;	
    	}
    

    3.求顺序栈长度

    int StackLength(SqStack S)
    {
    	return S.top-S.base;
    	}
    

    4.清空顺序栈

    Status ClearStack(SqStack &S){
    	if(S.base) S.top = S.base;
    	return OK;
    	}
    

    5.销毁顺序栈

    Status DestroyStack(SqStack &S){
    	if(S.base) {
    		delete S.base;
    		S.stacksize=0;
    		S.base=S.top=NULL;
    		}
    	return OK;
    	}
    

    6.顺序栈的入栈

    Status Push(SqStack &S,SElemType e){
    	if(S.top-S.base == S.stacksize)//栈满
    		return ERROR;
    	*S.top++=e;
    	return OK;
    	}
    

    7.顺序栈的出栈

    Status Pop(SqStack &S,SElemType e){//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
       if(S.top == S.base )//等价于 if(StackEmpty(S))
       	return ERROR;
       e=*--S.top;
       return OK;
       }
    
    展开全文
  • C语言数据结构基本操作,的各种操作C语言数据结构基本操作一.程序结构图二.算法及其功能函数InitStack(SqStack *S)/*创建*/GetTop(SqStack *S,SElemType e) /*取栈顶元素并用e返回*/ Push(SqStack *S...

    C语言数据结构之栈的基本操作,栈的各种操作

    C语言数据结构之栈的基本操作

    一.程序结构图

    1-60-jpg_6_0_______-90-0-0-90.jpg

    1-46-jpg_6_0_______-94-0-60-94.jpg

    1-46-jpg_6_0_______-88-0-106-88.jpg

    .算法及其功能函数

    1-46-jpg_6_0_______-69-0-152-69.jpg

    InitStack(SqStack *S)

    1-46-jpg_6_0_______-55-0-198-55.jpg

    1-46-jpg_6_0_______-71-0-244-71.jpg

    1-46-jpg_6_0_______-117-0-290-117.jpg

    1-46-jpg_6_0_______-123-0-336-123.jpg

    /*创建栈*/

    GetTop(SqStack *S,SElemType e) /*取栈顶元素并用e返回*/ Push(SqStack *S,SElemType e) /*插入e为栈顶元素*/ Pop(SqStack *S,SElemType *e) /*删除栈顶元素并用e返回*/ StackEmpty(SqStack S) /*判断栈是否为空*/ StackLength(SqStack S) /*求栈的长度*/ Nizhi(SqStack S) /*将栈中元素逆置*/ 三.源代码

    #include

    #include

    #define OK 1

    #define OVERFLOW -2

    typedef int Status;

    typedef int SElemType;

    #define STACK_INIT_SIZE 100

    #define STACKINCREMENT 10

    typedef struct{

    SElemType *base;

    SElemType *top;

    int stacksize;

    }SqStack;

    Status InitStack(SqStack *S)

    {

    int i,n; SElemType e;

    展开全文
  • 考察能否正确理解栈的顺序存储结构,以及对顺序栈基本操作的掌握程度。 2. 实验介绍 掌握栈和队列的特点,并能在相应的应用问题中正确选用。熟练掌握栈的顺序栈和链栈的进栈出栈算法,特别应注意栈满和栈空的条件...

    1. 实验目的

    考察能否正确理解栈的顺序存储结构,以及对顺序栈基本操作的掌握程度。

    2. 实验介绍

     掌握栈和队列的特点,并能在相应的应用问题中正确选用。熟练掌握栈的顺序栈和链栈的进栈出栈算法,特别应注意栈满和栈空的条件。掌握利用栈实现表达式求值的算法,了解迷宫求解算法。理解递归算法执行过程中栈的状态变化过程,了解将递归程序转换为非递归程序的方法。熟练掌握循环队列和链队列的进队出队算法,特别是循环队列中队头与队尾指针的变化情况。

    3.实验内容

     创建名为 ex030501_01.py 的文件,在其中编写一个顺序栈的类,该类必须包含顺序栈

    的定义及基本操作,并通过以下步骤测试基本操作的实现是否正确。

    (1)初始化一个顺序栈 SequenceStack。 (2)判断栈是否为空。

    (3)将元素 1,3,5 依次进栈。 (4)遍历栈内所有元素。 (5)获取栈顶元素。

    (6)获取栈的长度。

    (7)将栈中元素依次出栈并输出。

    (8)判断栈是否为空。

    4. 实验步骤与代码

    class SequenceStack():
        def __init__(self):
            self.Max=10
            self.s=[None for i in range(0,self.Max)]
            self.top=-1
    
        def Create(self):
            if self.top>=self.Max-1:
                print("栈满")
                return
            print("输入'#'退出")
            Element=input("请输入元素:")
            while Element !='#':
                if self.top>=self.Max-1:
                    print("栈满")
                    return
                self.top+=1
                self.s[self.top]=Element
                Element=input("请输入元素:")
    
        def IsEmpty(self):
            if self.top==-1:
                return True
            else:
                return False
    
        def ForStack(self):
            if self.IsEmpty():
                print("栈为空")
                return
            for i in range(0,self.top+1):
                print(self.s[i])
    
        def GetTop(self):
            if self.IsEmpty():
                print("栈为空")
                return
            print("栈顶元素:",self.s[self.top])
    
        def GetLength(self):
            if self.IsEmpty():
                print("栈为空")
                return
            print("栈的长度:",self.top+1)
    
        def PopStack(self):
            if self.IsEmpty():
                print("栈为空")
                return
            while self.top>-1:
                print(self.s[self.top],"出栈")
                self.top-=1
    
    s=SequenceStack()
    if s.IsEmpty():
        print("栈为空")
    else:
        print("栈不为空")
    s.Create()
    s.ForStack()
    s.GetTop()
    s.GetLength()
    s.PopStack()
    if s.IsEmpty():
        print("栈为空")
    else:
    print("栈不为空")
    

    5.实验结果

     

    展开全文
  • 2.掌握单链表基本操作算法实现。 3.了解单链表的应用。 第二章 实验环境 硬件环境要求: PC机(单机) 使用的软件名称、版本号以及模块: DEV C++、VS2010等。 第三章 实验内容 本实验主要介绍常见的数据结构...

    第一章实验目的

    1.掌握线性表的链式存储结构的表示和实现方法。
    2.掌握单链表基本操作的算法实现。
    3.了解单链表的应用。

    第二章 实验环境

    硬件环境要求:
    PC机(单机)
    使用的软件名称、版本号以及模块:
    DEV C++、VS2010等。

    第三章 实验内容

    本实验主要介绍常见的数据结构Stack。

    第四章实验步骤

    #include <iostream>
    #include <string>
    using namespace std;
    #define ERROR 0
    #define OK 1
    #define OVERFLOW -2
    #define MAXSIZE 100
    typedef char SElemType;
    
    typedef struct {
    	SElemType* base;
    	SElemType* top;
    	int stacksize;
    }SqStack;
    
    int InitStack(SqStack& S);  //构造一个空栈
    bool StackEmpty(SqStack& S);  //判断栈是否为空
    SElemType GetTop(SqStack& S);  //得到栈顶元素
    int Push(SqStack& S, SElemType e);  //入栈
    int Pop(SqStack& S, SElemType e);  //出栈
    bool Match(SqStack& S);  //判断括号是否合法
    
    int main()
    {
    	SqStack s;
    	InitStack(s);
    	Match(s) ? cout << "括号合法!" << endl : cout << "括号不合法!" << endl;
    
    	return 0;
    }
    
    int InitStack(SqStack& S)
    {
    	S.base = new SElemType[MAXSIZE];
    	if (!S.base) exit(OVERFLOW);
    	S.top = S.base;
    	S.stacksize = MAXSIZE;
    	return OK;
    }
    bool StackEmpty(SqStack& S)
    {
    	return S.top == S.base ? true : false;
    }
    SElemType GetTop(SqStack& S)
    {
    	if (S.top != S.base)
    		return *(S.top - 1);
    	return ERROR;
    }
    int Push(SqStack& S, SElemType e)
    {
    	if (S.top - S.base == S.stacksize)
    		return ERROR;
    	*S.top++ = e;
    	return OK;
    }
    int Pop(SqStack& S, SElemType e)
    {
    	if (S.top == S.base)
    		return ERROR;
    	e = *--S.top;
    	return OK;
    }
    bool Match(SqStack& S)
    {
    	int flag = 1;
    	string str;
    	cin >> str;
    	for (auto c : str)
    	{
    		if (c == '(')
    			Push(S, c);
    		else
    		{
    			if (!StackEmpty(S) && GetTop(S) == '(')
    				Pop(S, '(');
    			else
    			{
    				flag = 0;
    				break;
    			}	
    		}
    	}
    	if (StackEmpty(S) && flag)
    		return true;
    	return false;
    }
    

    运行结果:
    输入:()
    在这里插入图片描述

    输入:(((())))
    在这里插入图片描述

    第五章实验感悟
    我觉得数据结构很难。

    展开全文
  • 本关任务是实现 step1/SeqStack.cpp 中的SS_IsFull、SS_IsEmpty、SS_Length、SS_Push和SS_Pop五个操作函数,以实现判断是否为满、是否为空、求元素个数、进栈和出栈等功能。 相关知识 基本概念 是一种...
  • 数据结构与算法实验报告Tag内容描述:1、实验二 和队列实现四则运算 一、实验目的及要求: 1、掌握和队列的基本操作:建立、插入、删除、查找、合并 2、掌握用和队列的储存 3、熟悉C语言上机编程环境 4、...
  • :一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 ...压栈:的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:的删除操作叫做出栈。出数据也在栈顶
  • 定义线性表中的一种特殊数据结构,数据只能从固定的一端插入数据或删除数据,另一端是封死的。特点FILO(First In Last Out): 先进后出;满还存会“上溢”,空再取会“下溢”;“上溢”:在已经存满数据元素...
  • 数据结构的存储方式其实只有数组和链表两种,别的数据结构例如队列、、树、图、堆及散列表都是基于以上两种方式实现的。数组的优点在于可以随机访问,但是插入删除时需要解决扩容缩容的问题;链表的优点在于可以...
  • 1.2 逻辑结构物理结构2 基本数据结构介绍2.1 数组2.2 2.3 队列2.4 链表(1)单链表(2)双向链表2.5 树(1)二叉树 0 前言 ​ 由于疫情的原因数据结构与算法这门很重要的课是以网上授课的形式进行教学的,自己...
  • 数据结构与算法必知基础知识

    千次阅读 多人点赞 2021-01-06 22:58:12
    数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运行效率和降低...
  • 的定义是一种后进先出的数据结构是限制插入和删除只能在一个位置上的线性表。允许删除和插入的一端位于表的末端,叫做栈顶。不允许删除和插入的另一端叫做底。对基本操作有push(压栈)和pop(出栈)。...
  • “如何使用顺序表模拟以及实现对数据基本操作(出栈和入栈)” 给大家做详细介绍。 如果你仔细观察顺序表(底层实现是数组)和栈结构就会发现,它们存储数据的方式高度相似,只不过数据的存取过程有特殊...
  • 结构特点和操作 是限定只能在表的一端进行插入和删除的线性表,在表中,允许插入和删除的一端称为“栈顶”,不允许插入和删除的一端称为“底”。的元素进出是按照“先进后出,后进先出”的顺序进行。和...
  • 广义上,数据结构就是一组数据的存储结构,算法就是操作数据结构的一种方法。 程序 = 数据结构 + 算法 结构是数据元素之间不是独立的,存在特定的关系,数据结构指的是数据对象中数据元素之间的关系。 算法的概念 ...
  • 数据结构笔记
  • 顺序的实现 src/step1/SeqStack.cpp /************************************************************* 顺序存储的 实现文件 更新于2020年4月27日 *********************************************************...
  • 数据结构与算法设计二——

    千次阅读 2021-12-14 22:21:45
    掌握基本操作:建立、查找、插入、删除。
  • 四大逻辑结构 集合/线性/树形/图形结构 单链表结构的线性表 物理结构 硬盘:文件结构; 内存:元素的存储结构形式有**顺序存储**和**链式存储**; 一般我们说存储结构只关注内存,即顺序结构和链式结构。 顺序结构...
  • 今天来介绍另外两个线性表中的数据结构和队列。 Stack 是一种线性表,只有前后关系,但是相对于数组和链表来说,其元素的操作是受限的。只允许在一端进行元素的插入、删除操作,往中放入元素我们称之为...
  • 本书基于Python语言介绍了数据结构与算法基本知识,主要内容包括抽象数据类型和Python面向对象程序设计、线性表、字符串、和队列、二叉树和树、集合、排序以及算法基本知识。本书延续问题求解的思路,从解决...
  • 是一种非常重要的数据结构,虽然逻辑简单,但是非常重要,许多问题的求解,都使用到了
  • 导语内容提要程玉胜主编的《数据结构与算法C语言版习题精编实验指导》作为《数据结构与算法(C语言版)》教材的配套教学参考书,主要内容包括习题解析和实验指导两大部分,其中“例题精解”、“习题实训”是习题解析...
  • 前端面试的数据结构与算法

    千次阅读 2021-02-11 13:12:45
    前端面试的数据结构与算法面试大厂时会问的数据结构与算法数据结构(二叉树)1.找出二叉树中节点值的和等于固定值的路径2.深度优先遍历广度优先遍历2-1 深度优先遍历2-2 广度优先遍历算法1.时间复杂度2.判断数组中...
  • 顺序栈基本操作实现(所有代码均在Embarcadero DevC++6.0和VSCode 2021上编译运行通过) #include<stdio.h> #include<stdlib.h> #include<iostream> #define SElemType int #define Status int #...
  • 的定义:只允许在一端进行删除或插入操作的线性表。 栈顶(Top):线性表中允许进行插入删除操作的那一端。 底(Bottom):不能进行插入删除的那一端。 顺序(顺序存储) 逻辑结构的实现 的链式存储...
  • 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督。本文介绍数据结构中的的概念、存储结构、的特点以及的适用场景,另外会穿插介绍面试中的一些经典问题供读者参考。1.的相关概念是一种有着...
  • 1、是限定仅在表尾进行插入和删除操作的线性表。是一种特殊的线性表。表头端称为底(bottom),表尾端称为栈顶(top)。...n}数据关系:R={ | ai-1, ai∈D, i = 2, ..., n }基本操作:initStack(&S)操作...
  • 栈栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端...遵循先进后出原则.png顺序存储物理结构是顺序存储,先开辟一块内存空间,每...
  • C语言实现顺序栈基本操作基本操作顺序栈储存结构初始化顺序栈判断顺序栈是否为空顺序栈的长度清空顺序栈销毁顺序栈压栈n个元素入栈出栈遍历测试代码整合 基本操作 顺序栈储存结构 //定义顺序栈存储结构 typedef ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 133,694
精华内容 53,477
关键字:

数据结构与算法栈的基本操作

数据结构 订阅