精华内容
下载资源
问答
  • 栈:进栈,出栈,取栈顶元素,判断栈是否为空,置空栈,输出元素个数等 注:用switch进行选择操作。 //栈:进栈,出栈,取栈顶元素,判断栈是否为空,置空栈,输出元素个数等。 #include"stdio.h" #define maxsize 100...

    栈:进栈,出栈,取栈顶元素,判断栈是否为空,置空栈,输出元素个数等

    注:用switch进行选择操作。

    //栈:进栈,出栈,取栈顶元素,判断栈是否为空,置空栈,输出元素个数等。
    #include"stdio.h"
    #define maxsize 100
    typedef struct
    {
    	int datas[maxsize];
    	int top;
    }link;
    
    void menu(void)
    {
    	printf("\n///");
    	printf("\n    1  判栈空              2  进栈    ");
    	printf("\n    3  出栈                4  取栈顶元素   ");
    	printf("\n    5  栈置空              6  求当前元素个数    ");
    	printf("\n    7  显示栈中元素        8  退出");
    	printf("\n///");
    }
    
    void initialize(link *a)//初始化函数
    {
    	a->top=0;
    }
    
    int judge(link *a)//判断栈是否为空
    {
    	if(a->top==0)
    		return 0;
    	else
    		return 1;
    }
    
    int enter(link *a,int x)//进栈
    {
    	if(a->top==maxsize-1)
    	{
    		printf("此栈已满\n");
    		return 0;
    	}
    	else
    	{
    		a->top++;
    		(a->datas)[a->top]=x;
    		return 1;
    	}
    }
    
    int out(link *a,int x)//出栈,栈的特点是*后进先出*,出栈的是最后一个元素
    {
    	if(judge(a)==0)
    	{
    		printf("此栈为空\n");
    		return 0;
    	}
    	else
    	{
    		x=(a->datas)[a->top];
    		a->top--;
    		return 1;
    	}
    }
    
    int gettop(link *a,int x)//取栈顶元素
    {
    	if(judge(a)==0)
    	{
    		printf("此栈为空\n");
    		return 0;
    	}
    	else
    	{
    		x=(a->datas)[a->top];
    		return 1;
    	}
    }
    
    int number(link *a)//输出元素个数
    {
    	return a->top;
    }
    
    void clear(link *a)
    {
    	a->top=0;//置空栈
    }
    
    void shuchu(link *a)//输出
    {
    	int i;
    	if(judge(a)==0)
    		printf("此栈为空\n");
    	else
    	{
    		for(i=1;i<=a->top;i++)
    			printf("%5d",a->datas[i]);
    	}
    }
    
    void main()
    {
    	link a;
    	char yn;
    	int i,x;
    	menu();
    	initialize(&a);//初始化
    	printf("\n请输入一个序号(1~8)\n");
    	scanf("%d",&i);	
    	while(i!=8)
    	{
    		switch(i)
    		{
    			case 1:
    				if(judge(&a)==0)
    					printf("此栈为空");
    				else
    					printf("此栈不为空");
    				break;
    			case 2:
    				printf("请输入要进栈的元素:\t");
    				scanf("%d",&x);
    				if(enter(&a,x)==1)
    					printf("进栈成功");
    				else
    					printf("进栈失败");
    				break;
    			case 3:
    				if(out(&a,x)==1)
    				   printf("出栈成功");
    				else
    					printf("出栈失败");
    				break;
    			case 4:
    				if(judge(&a)==1)
    					printf("栈顶元素为:%d",x);
    				else
    					printf("出栈失败");
    				break;
    			case 5:
    				printf("如果要置空当前元素的话,请输入Y或y,若不想就随意输入\n");
    				getchar();
    				scanf("%c",&yn);
    				if(yn=='Y'||yn=='y')//注意字符加单引号
    				{
    					clear(&a);
    					printf("栈已置空");
    				}
    				break;
    			case 6:
    				printf("栈中元素个数为:%d",number(&a));
    				break;
    			case 7:
    				printf("栈中元素为:");
    					shuchu(&a);
    				break;
    				default:printf("操作有误\n");
    		}
    		printf("\n请输入一个序号(1~8)\n");
    		scanf("%d",&i);
    	}
    }
    

    运行结果如下:
    运行成功

    展开全文
  • 数据结构 主讲人章万静 顺序栈判断栈满 32 2 41 位置1 位置2 位置3 位置4 位置5 位置6 s[0] s[1] s[2] s[3] s[4] s[5] 栈底 判断顺序栈是否已满需要考虑top与栈最大空间之间的关系 如图顺序栈最大有6个空间可以存放6...
  • 顺序,遵循先进后出后进先出原则。我在写的时候,宏定义的 ...create函数为创建函数。push为入栈函数。empty函数用来判断 栈是否,print函数用来出栈。 //以下为全部代码 #include "stdio.h" #include "mall...

    顺序栈,遵循先进后出后进先出原则。我在写的时候,宏定义的
    firstsize 为创建一个栈时这个栈的初始大小,这里为100。addsize
    为当栈满时,再想入栈的话每次栈大小的增量,这里用10来代替。
    create函数为创建栈函数。push为入栈函数。empty函数用来判断
    栈是否为空,print函数用来出栈。
    //以下为全部代码

    #include "stdio.h"
    #include "malloc.h"
    #define firstsize 100
    #define addsize 10
    typedef struct{
     int *base;
     int *top;
     int size;
    }Sq;
    
    void create(Sq &s)
    {
     s.base=(int*)malloc(firstsize*sizeof(int));
     if(s.base)printf("create OK!\n");
     s.top=s.base;
     s.size=firstsize;
    }
    
    void push(Sq &s,int e)
    {
     if(s.top-s.base>=s.size)
     {
     s.base=(int*)realloc(s.base,(s.size+addsize)*sizeof(int));
     printf("栈内空间分配成功\n");
     }
     *s.top=e;
     s.top++;
     printf("元素[%d]已入栈!\n",e);
    }
    
    void print(Sq &s)
    {
     if(empty(s))printf("抱歉,栈已满,无法出栈\n");
     else
     {
       s.top--;
       printf("出栈:[%d]\n",*s.top);
      }
    }
    
    int empty(Sq &s)
    {
     if(s.top==s.base||s.top<s.base)
     { printf("栈空\n");
     return 1;}
     else {printf("栈未空\n");
     return 0;}
    }
    
    void main()
    {
    int i; Sq s;
    do
    {
    printf("\n----------------\n1-");
    printf("创建一个栈\n2-判断栈是否为空\n3-入栈\n4-出栈\n0-退出");
    printf("\n----------------\n\n");
    scanf("%d",&i);
    switch(i)
    {
     case 1:create(s);break;
     case 2:empty(s);break;
     case 3:
     {
     int e;
     printf("输入入栈元素:\n");
     scanf("%d",&e);
     push(s,e);
     }break;
     case 4:print(s);break;
     case 0:break;
     default:
     {printf("输入错误,请重新输入\n");
     }continue;
     }
     }while(i!=0);
     printf("程序已退出\n");
    }
    
    
    

    运行结果:sxz

    展开全文
  • 顺序的基本操作实现---入栈、出栈、判断是否为空 本身就比较简单,的基本概念推荐文章:http://blog.csdn.net/hguisu/article/details/7674195 实现代码如下: stack.h 的头文件: #pragma once #...

    顺序栈的基本操作实现---入栈、出栈、判断是否为空

    栈本身就比较简单,栈的基本概念推荐文章:http://blog.csdn.net/hguisu/article/details/7674195

    实现代码如下:

    stack.h 栈的头文件:

    #pragma once 
    #include <iostream>
    
    #define MAX 10  // 注意没有分号
    class stack
    {
    private:
    	int arr[MAX];
    	int top;
    
    public:
    	stack()   //构造函数
    	{
    	    top = -1;
    	}
    
    	void pop(int val); //入栈
    	int push();//出栈
    	bool isFull(); //判断是否栈满
    	bool isEmpty();//判断是否为空栈
    
    
    };//有分号
    

    stack.app 栈的子函数文件

    #include "stack.h"
    using namespace std;
    
    bool stack::isEmpty()
    {
    	if(top == -1)
    	{
    		cout <<"is empty" << endl;
    		return true;
    	}
    	else 
    		return false;
    }
    
    bool stack::isFull()
    {
    	if(top == MAX)
    	{
    		cout <<"is full " << endl;
    		return true;
    	}
    	else 
    		return false;
    }
    
    // 入栈,先判断是否满
    void stack::pop(int val)
    {
    	if(isFull() == 1)
    		cout << "have full" << endl;
    	else 
    	{
    		top++;
    		arr[top] = val;
    		
    	}
    }
    
    // 出栈,判断是否为空
    int stack::push()
    {
    	if(isEmpty() == 1)
    		cout <<"have empty" <<endl;
    	else 
    	{
    		int data = arr[top];
    		arr[top] = NULL;
    		top--;
    		return data;
    	}
    }
    

    测试文件:
    #include "stack.h"
    using namespace std;
    
    int main ()
    {
    	stack test;
    	test.isEmpty();
    
    	test.pop(1);
    	test.pop(2);
    	test.pop(3);
    	test.isFull();
    
    	int data1 = test.push ();
    	cout <<"出栈数字为" << data1 << endl;
    
    	int data2 = test.push ();
    	cout <<"出栈数字为" << data2 << endl;
    
    	system ("pause");
    	return 0;
    
    }


    展开全文
  • :是一种思想,实现将数据以先进后出(FILO:first in last out)方式操作 一、模型:井口 二、数据类型: //宏: #define MAXSIZE 10 //重命名:将int取一个别名:StackType typedef int StackType; //...

    栈:是一种思想,实现将数据以先进后出(FILO:first in last out)方式操作

    一、模型:井口

    二、数据类型:
            //宏:
            #define MAXSIZE  10
            //重命名:将int取一个别名:StackType
            typedef int StackType;
            //栈的类型:
            struct stack
            {
            //数据:
                    StackType buf[6];       //栈的元素
            //方法
                    short top;              //栈顶下标
            };
      三、功能:
        1、初始化InitStack
        2、清空栈:ClearStack
        3、出栈:pop
        4、进栈:push
        5、判断栈为满:IsFull
        6、判断栈为空:IsEmpty
        7、取次栈顶
        8、栈的元素个数:StackLength

    四、栈的应用:撤消与恢复,记忆,递归,高级功能计算

     

    栈的代码详解、将二进制结果取出,实现代码如下

    #include<stdio.h>
    //宏
    #define MAXSIZE 32
    #define FALSE 0
    #define TRUE 1
    //重命名:将char取一个别名:StackType
    typedef char StackType;
    typedef char BOOL;
    //栈的类型;
    struct st
    {
    //数据
    	StackType buf[MAXSIZE];//栈的元素
    //方法
    	short top;//栈顶下标
    };
    //重命名:
    typedef struct st stack;//将struct stde 类型取别:stack
    
    /*功能:初始化栈
     *函数名:InitStack
     *返回值:void
     */
    void InitStack(stack *p)
    {
    	p->top=-1;
    }
    
    /*功能:判断栈为满
     *函数名:IsFull
     *返回值:为满——真1,非满——假0
     */
    BOOL IsFull(stack *p)
    {
    	if(MAXSIZE-1==p->top)
    	{
    		return TRUE;
    	}else
    	{
    		return FALSE;
    	}
    }
    
    /*功能:判断栈为空
     * 函数名:IsEmpty
     *返回值:为空——真1,非空——假0
     */
    BOOL IsEmpty(stack *p)
    {
    	if(-1==p->top)
    	{
    		return TRUE;
    	}else
    	{
    		return FALSE;
    	}
    }
    /*功能:进栈
     *函数名:push
     *返回值:成功TRUN 失败FALSE
     *注:不能为满,否则进栈失败
     */
    BOOL push(stack *p,StackType data)//p=&s
    {
    //判断栈是否为满
    	if(TRUE==IsFull(p))//为满
    	{
    		return FALSE;//返回失败
    	}
    	p->buf[++p->top]=data;
    	return TRUE;//返回成功
    }
    /*功能:出栈
     *函数名:pop
     *返回值:出栈成功TRUE 失败FALSE
     */
    BOOL pop(stack *p,StackType *pd)
    {
    //判断是否为空,为空出栈无意义
    	if(TRUE==IsEmpty(p))
    	{
    		return FALSE;//出栈失败
    	}
    	*pd=p->buf[p->top--];//优先级->大于--
    	return TRUE;//出栈成功
    }
    void main()
    {
    //定义变量:类型 变量名
    //struct st s;
    	struct st s;//分配空间
    	//初始化
    	InitStack(&s);
    	int num=0;
    	printf("请输入");
    	scanf("%d",&num);
    	//求二进制
    	while(num!=0)
    	{
    	//将余数入栈
    		if(FALSE==push(&s,num%2))
    		{
    			return;//结束
    		}
    		num/=2;
    	}
    	//将二进制结果取出来
    	char value=0;
    	while(FALSE!=pop(&s,&value))
    	{
    		printf("%d",value);
    	}
    	printf("\n");
    }

     

    展开全文
  • 栈与队列--判断栈/队列为空/满

    万次阅读 2016-06-28 10:24:15
    完成int IsEmpty(Stack S)函数,该函数判断栈是否,如果返回1,否则返回0。 完成int IsFull(Stack S)函数,该函数判断栈是否已满,如果满返回1,否则返回0。typedef int ElemType; struct StackRecord; ...
  • Java判断对象是否为空的方法:isEmpty,null,"

    万次阅读 多人点赞 2019-01-08 17:39:05
    今天修改辞职同事遗留的代码才发现这个问题,不能用isEmpty来判断一个对象是否为null,之前没在意这个问题,在报了指针之后才发现这个问题。 查了一下关于判断为空的几个方法的区别,这里做一个简单的总结: null...
  • 试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。 #include<iostream> using namespace std; typedef struct { int top[2], bot[2]; int *V; int m; }DblStack; void ShowM
  • Python判断是否为空

    万次阅读 2018-12-23 22:05:24
    Python判断是否为空 python语言与其他语言不同,没有NULL类型,用none来表示,但同时需要注意,none是有数据类型的,type‘Nonetype’ 因此python中判断对象为空时需要注意对象类型 example: type:str ...
  • Java判断Stack和Queue是否为空的方法

    千次阅读 2019-12-23 14:54:50
    stack.empty(), 为空返回true,不为空返回false。 stack.peek(), 为空返回null,不为空返回栈顶元素。 stack.size(), 为空返回0,不为空返回一个大于1的整数。 Queue queue.isEmpty(), 为空返回true,不为空返回...
  • C++中与队列的函数

    2020-12-22 20:17:59
    判断栈是否为空布尔型、输出零或一;  q.top(); 取出栈顶元素;例如j=q.top();  q.size(); 栈中元素的个数;  队列的应用:  头文件include  定义队列  queue<type>q;  比较常用的函数:  ...
  • 顺序栈的函数源码 #include <stdio.h> #include <stdbool.h> #include <stdlib.h>...功能:顺序栈函数的使用 ...在顺序栈中:我们主要讨论顺序栈的 初始化,栈空,栈满,入栈,出栈,遍历
  • 判断字符串是否为回文(C语言 顺序

    千次阅读 多人点赞 2019-10-08 22:37:16
    首先我们需要确定思路,如何用判断字符串是否为回文。 1.是先进后出 2.回文是指正读反读均相同的字符序列 从这两点很容易就可以联想到一个方法,我们先将字符串全部存进去中,再将它全部出栈,进行对比,...
  • 栈的顺序存储的初始化、判断栈空、入栈、出栈、读取栈顶元素、栈置空、求栈长操作 代码如下: //栈的顺序存储表示 #include #include #include #define MAXSIZE 100 typedef int ElemType; typedef struct Node...
  • 1.使用顺序判断一个单词是否为回文词 代码如下 sqstack.h //头文件 #ifndef SQSTACK_H_INCLUDED #define SQSTACK_H_INCLUDED #define STACK_INIT_SIZE 100 #define STACK_INCREMENT 50 typedef int SElemType;...
  • 实现顺序,并利用该完成进制转换
  • 的经典用法——判断括号是否匹配

    千次阅读 多人点赞 2018-11-04 19:28:57
    #简单说明的特征: ...利用这一特性,我们就可以判断括号是否匹配了。 #主要思路如下: 我们从左到右依次扫描需要判断的字符串,遇见“(”,“{”,“[”就入栈,遇见“)”,“]”,“]”就出栈,...
  • C++ 字符串 对象 C++ 字符串 对象 创建方法 C++ 字符串 对象 输出到控制台 C++ 字符串 拼接 ...C++ 字符串 方法调用 ( 内存对象 ) C++ 字符串 方法调用 ( 堆内存对象 ) C / C++ 字符串 完整代码示例
  • 用数组实现一个

    2011-09-16 11:42:37
    C++ 用数组实现一个 很经典的 大家可以看看 学习学习
  • 今天我们来看看在VC++6.0继承环境中,C语言的空函数在反汇编中是怎样的结构,然后来学习C和汇编的混合编程中裸函数与...1、C空函数的反汇编结构分析:以下面的代码例,进行反汇编:#include "stdafx.h" //C空函数 vo
  • 今天写算法时,无意间看到了判断栈是否为空的两个方法,之前一直用isEmpty(),从未用过empty(),却不曾想两者均可判断一个栈是否为空,所以深入源码探究了一番: java.util.Vector: /** * Tests if this vector ...
  • 的基本函数C++实现

    千次阅读 2018-11-14 21:57:45
    前两天自己照着一些博客仿写了的C++,其间也出了一些问题,但是通过调试,各个基本函数都得到了验证。当然可能存在我不知道的问题,如果有小伙伴验证我代码的时候出现了问题希望可以告知我一下,非常感谢。 代码...
  • 的实际应用—判断一个序列是否为栈的有效输出序列 对于数据结构学科的初学者,的构建是很重要的知识,判断一个栈是否为有效输出序列是其中重要的题目。笔者整理了三种C++代码,其核心编程思想大致相同,希望能对...
  • 若不相等就可以直接判断回文字符串 */ #include<stdio.h> #include<stdlib.h> #define MAXSIZE 50//定义和队的最大存储 //定义的存储结构 typedef struct { char data[MAXS
  • 千次阅读 2017-11-02 18:01:37
    一、的定义和运算 1.1 的定义  又称为堆栈,它是一种运算受限的线性表,其限制是仅允许在线性表的固定一端(表尾)进行插入、删除和读取元素等运算,不允许在其他任何位置进行运算,比一般线性表运算更加...
  • 怎么判断set集合是否为空

    万次阅读 2013-01-13 17:22:59
    这里同样的元素指的是以equals()方法判断的 2、列表List  List列表中的记录元素添加的顺序,而且可以填充相同的元素。 3、映射Map  映射中包含的都是“键(Key)-值(value)”对,且一个键对应一个值。所以键是不...
  • 因为顺序判断栈顶指针是否为-1,链式判断头指针是否 所以写出 bool GetTop(SqStack*s,ElemType &e) { } 注意这里的s不需要&,因为这里只需要将e的值返回即可 ②写判断语句 顺序 { if(s-&...
  • 的链式存储的定义、初始化、判断空、入栈、出栈、读取栈顶元素、求长度、清空操作, 代码如下: //的链式存储表示 因为入栈和出栈top都要改变,所以传参数的时候要传指针的地址 #include #include #...
  • 本文实例主要实现:输入一个括号字符串,依次检验,若左括号则入栈,若右括号则出栈一个字符判断是否与之相对应,在最后还需判断栈是否为空,如果不为空则不匹配。 首先回顾栈的基本知识: 1.定义栈的结构体并...
  • 判断操作是否合法(

    千次阅读 2016-04-10 14:18:21
     假设以I和O分别表示进栈和出栈操作,栈的初态和终态均为空,进栈和出栈的操作序列可表示仅由I和O组成的序列。...编写一个算法,判断栈中的序列是否合法!若合法则返回1,否则返回0. 需编写的算法:int

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 116,228
精华内容 46,491
关键字:

判断栈是否为空函数