精华内容
下载资源
问答
  • 栈:进栈,出栈,取栈顶元素,判断栈是否为空,置空栈,输出元素个数等 注:用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);
    	}
    }
    

    运行结果如下:
    运行成功

    展开全文
  • #include #include typedef int elem; typedef struct LNode { elem data; struct LNode* next; }LNode; void initialStack(LNode*&...//栈为空的情况 x = L->data; p = L; L = p->next; //free(p); return 1; }
    #include <stdio.h>
    #include <malloc.h>
    
    typedef int elem;
    
    typedef struct LNode {
    	elem data;
    	struct LNode* next;
    }LNode;
    
    void initialStack(LNode*& L) {
    	L = NULL;
    }
    int isEmpty(LNode* L) {
    	if (L == NULL)
    		return 1;
    	else 
    		return 0;
    }
    void push(LNode*& L, elem x) {
    	LNode* p;
    	p = (LNode*)malloc(sizeof(LNode));
    	p->next = NULL;
    	p->next = L;
    	p->data = x;
    	L = p;
    }
    int pop(LNode*& L, elem& x) {
    	LNode* p;
    	if (L == NULL)
    		return 0;//栈为空的情况
    	x = L->data;
    	p = L;
    	L = p->next;
    	//free(p);
    	return 1;
    }
    
    展开全文
  • 无头结点的链栈初始化,判断栈是否为空,进栈,出栈 typedef struct LNode { int data; LNode *next; }LNode; void InitStack(LNode *&lst) { lst=NULL; } int isEmpty(LNode *&lst) { if(lst==NULL) ...

    无头结点的链栈初始化,判断栈是否为空,进栈,出栈

    typedef struct LNode
    {
    	int data;
    	LNode *next;
    }LNode;
    
    void InitStack(LNode *&lst)//初始化栈
    {
    	lst=NULL;
     } 
     
    int isEmpty(LNode *&lst)//判断栈是否为空,栈空则返回1,否则返回0;
    {
    	if(lst==NULL)
    		return 1;
    	else return 0;
    }
    
    void push(LNode *&lst,int x)//进栈
    {
    	LNode *p;
    	p=(LNode*)malloc(sizeof(LNode));
    	p->next=NULL;
    	p->data=x;
    	p->next=lst;
    	lst=p;
    	
    }
    
    int pop(LNode *&lst,int &x)//出栈
    {	
    	while(lst=NULL)
    	return 0;
    	LNode *p;
    	p=lst;
    	x=p->data;
    	lst=p->next;
    	free(p);
    	return 1;
    }
    
    
    
    
    展开全文
  • 记录一下今天学的代码 , 关于c++顺序 // sqstack.cpp : 顺序初始化和输出打印 // #include "stdafx.h" #include "iostream" #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef char ElemType;...

    记录一下今天学的代码 , 关于c++顺序栈

    // sqstack.cpp : 顺序栈初始化和输出打印
    //
    
    #include "stdafx.h"
    #include "iostream"
    #define STACK_INIT_SIZE 100
    #define STACKINCREMENT 10
    typedef char ElemType;
    typedef int Status;
    using namespace std;
    
    typedef struct Stack
    {
    	char *base;
    	char *top;
    	int stacksize;
    }SqStack;
    
    //判断栈是否为空
    bool isStackEmpty(SqStack &s){
    	if (s.top == s.base){
    		return true;
    	}
    	else{
    		return false;
    	}
    }
    
    //删除栈顶元素,并返回
    Status pop(SqStack &s){
    	ElemType e;
    	if (isStackEmpty(s)){
    		cout << "栈为空!" << endl;
    		return false;
    	}
    	return *(--s.top);
    }
    //删除栈顶元素,并返回
    bool clearStack(SqStack &s){
    	while (!isStackEmpty(s)){
    		pop(s);
    	}
    	return true;
    }
    
    bool visit(ElemType e){
    	cout << e << "";
    	return true;
    }
    
    
    //输出顺序为出栈的顺序
    void stackTraverse(SqStack &s){
    	if (isStackEmpty(s)){
    		cout << "栈为空" << endl;
    		exit(0);
    	}
    	while (!isStackEmpty(s)){
    		visit(*(--s.top));
    	}
    	cout << endl;
    }
    
    //插入元素e为栈顶元素
    Status push(SqStack &s, ElemType e){
    	if (s.top - s.base >= s.stacksize){
    		s.base = (ElemType *)realloc(s.base, (s.stacksize + STACKINCREMENT)* sizeof(ElemType));
    		if (!s.base){
    			exit(-1);
    		}
    		s.top = s.base + s.stacksize;
    		s.stacksize += STACKINCREMENT;
    	}
    	*s.top = e;
    	s.top++;
    	
    }
    
    
    //初始化栈
    bool initStack(SqStack &s){
    	s.base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
    	if (!s.base){
    		cout << "内存分配失败" << endl;
    		exit(-1);
    	}
    	s.top = s.base;
    	s.stacksize = STACK_INIT_SIZE;
    	cout << "初始化顺序栈成功" << endl;
    	return true;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	bool tagbool;
    	SqStack s;
    	//(1)初始化栈
    	initStack(s);
    	//(2)判断栈s是否为空
    	tagbool = isStackEmpty(s);
    	cout << "判断栈是否为空" << tagbool << endl;
    	//(3)以此进栈元素
    	cout << "插入元素abcde" << endl;
    	push(s, 'a');
    	push(s, 'b');
    	push(s, 'c');
    	push(s, 'd');
    	push(s, 'e');
    	//(4)判断栈s是否为空
    	tagbool = isStackEmpty(s);
    	cout << "判断栈是否为空" << tagbool <<endl;
    	//(5)输出出栈序列
    	cout << "输出出栈序列" << endl;
    	stackTraverse(s);
    	//(6)判断栈s是否为空
    	tagbool = isStackEmpty(s);
    	cout << "判断栈是否为空" << tagbool << endl;
    	//(7)释放栈
    	cout << "释放栈" << endl;
    	clearStack(s);
    
    	getchar();
    	return 0;
    }
    
    

     

    展开全文
  • 顺序,遵循先进后出后进先出原则。我在写的时候,宏定义的 firstsize 创建一个时这个的初始大小,这里100。...栈是否为空,print函数用来出栈。 //以下全部代码 #include "stdio.h" #include "mall...
  • #include #include typedef struct Node { ... clear()清空 if(pop(&S, &val)) //val用于保存出栈的数值 printf("ok\n"); else printf("error\n"); traverse(&S); return 0; }  
  • 顺序的基本操作实现---入栈、出栈、判断是否为空 本身就比较简单,的基本概念推荐文章:http://blog.csdn.net/hguisu/article/details/7674195 实现代码如下: stack.h 的头文件: #pragma once #...
  • 初始化等操作链栈的学习记录 #include <stdio.h> #include <stdlib.h> #include "stdafx.h" #include "iostream" using namespace std; #define OK 1 ...//的链式储存结构 typedef ...
  • :是一种思想,实现将数据以先进后出(FILO:first in last out)方式操作 一、模型:井口 二、数据类型: //宏: #define MAXSIZE 10 //重命名:将int取一个别名:StackType typedef int StackType; //...
  • Python判断是否为空

    万次阅读 2018-12-23 22:05:24
    Python判断是否为空 python语言与其他语言不同,没有NULL类型,用none来表示,但同时需要注意,none是有数据类型的,type‘Nonetype’ 因此python中判断对象为空时需要注意对象类型 example: type:str ...
  • 数据结构 主讲人章万静 顺序栈判断栈满 32 2 41 位置1 位置2 位置3 位置4 位置5 位置6 s[0] s[1] s[2] s[3] s[4] s[5] 栈底 判断顺序栈是否已满需要考虑top与栈最大空间之间的关系 如图顺序栈最大有6个空间可以存放6...
  • 链栈:运算是受限的单链表,的链式存储结果,只能在链表头部(栈顶)进行操作,所以没有必要附加头结点,栈顶指针就是头指针 是一种后进先出的线性表LIFO结构 空栈:不含任何元素的称为空栈 代码区 #include<...
  • Java判断Stack和Queue是否为空的方法

    千次阅读 2019-12-23 14:54:50
    stack.empty(), 为空返回true,不为空返回false。 stack.peek(), 为空返回null,不为空返回栈顶元素。 stack.size(), 为空返回0,不为空返回一个大于1的整数。 Queue queue.isEmpty(), 为空返回true,不为空返回...
  • 千次阅读 2017-11-02 18:01:37
    一、的定义和运算 1.1 的定义  又称为堆栈,它是一种运算受限的线性表,其限制是仅允许在线性表的固定一端(表尾)进行插入、删除和读取元素等运算,不允许在其他任何位置进行运算,比一般线性表运算更加...
  • 栈的顺序存储的初始化、判断栈空、入栈、出栈、读取栈顶元素、栈置空、求栈长操作 代码如下: //栈的顺序存储表示 #include #include #include #define MAXSIZE 100 typedef int ElemType; typedef struct Node...
  • JAVA顺序栈操作——初始化、入栈、出栈、判断空栈、判断栈满;顺序栈:使用一组连续的内存依次保存栈中的数据,定义一个top变量来保存栈顶序号。栈结构是“后进先出”的原则。
  • 数据结构 主讲人章万静 目录 栈实验-判断栈满操作 算法分析 Part 01 一算法分析 栈在什么情况下是满栈 top指向最后一个进栈数据时就是满栈即top是否等于STACKSIZE-1 #define STACKSIZE 6 //顺序栈有6个空间 int top=...
  • 栈与队列--判断栈/队列为空/满

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

    千次阅读 2019-07-28 14:58:18
    s.empty():empty()是说这个栈为空吗,为空返回true,不为空返回false,所以有时候在循环的时候,是while(!s.empty()),这样的,意识是如果s不为空,同理队列q不为空的意思也是这样的。while(!q.empty()) s.size(),...
  • Android 判断栈中Activity是否存在

    千次阅读 2019-06-22 15:58:47
    网上各种办法,最后经过测试,在中你能获取到的只有baseActivity和topActivity,如果你需要判断的Activity在别的位置,那么根本判断不了,因为返回的只有中Activity的个数,并没有Activity的名字。 private...
  • 试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。 #include<iostream> using namespace std; typedef struct { int top[2], bot[2]; int *V; int m; }DblStack; void ShowM
  • 的链式存储的定义、初始化、判断空、入栈、出栈、读取栈顶元素、求长度、清空操作, 代码如下: //的链式存储表示 因为入栈和出栈top都要改变,所以传参数的时候要传指针的地址 #include #include #...
  • Java判断字符串是否为空

    万次阅读 2018-04-13 10:56:42
    思路:判断某字符串是否为空为空的标准是str==null或str.length()==0一.字符串与null区别1、类型null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;""表示的...
  • Java判断对象是否为空的方法:isEmpty,null,"

    万次阅读 多人点赞 2019-01-08 17:39:05
    今天修改辞职同事遗留的代码才发现这个问题,不能用isEmpty来判断一个对象是否为null,之前没在意这个问题,在报了指针之后才发现这个问题。 查了一下关于判断为空的几个方法的区别,这里做一个简单的总结: null...
  • 判断顺序栈是否为空 top指针和base指针相等 给我们一个S,判断是否为空,不为空,则返回false 求顺序的长度:里头有多少个元素,给我一个顺序S,求两个指针的差 清空顺序:不管里面...
  • LeetCode判断字符串是否循环 1、实现链式队列 特点:先进先出 定义Node类,存放队列的data,next 定义Node类的front(头结点),...2、元素是右括号,判断栈是否为空,若为空,则表示右括号多,否则,执行第三步 3、
  • 实现一个顺序存储的(数据结构与算法 -

    千次阅读 多人点赞 2020-04-24 07:22:00
    的基本概念 是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算,这一端被称为栈顶。既可以采用顺序存储,也可以采用链接存储来实现。下面给出了一种基于顺序存储的的实现方案: 如图 1 ...
  • C语言数据结构之(链表实现) tips:前些天学习了单链表的增删改查,对于双向链表和循环链表而言,无非就是对单链表的指针进行稍微的变换。今天来看看c语言数据结构之的实现以及的各种操作。 的特点是先进后出...
  • 首先需要理解null和“ ”的区别: null表示这个字符串在中没有任何指向因此在堆中没有分配内存空间,如果要调用这个字符串会出现指针... 判断一个对象是否“” 用eques() 判断一个字符串是否是null 用 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 190,588
精华内容 76,235
关键字:

判断栈是否为空