数据结构顺序栈和链栈的区别_数据结构链栈的实现代码

数据结构顺序栈和链栈的区别_数据结构链栈的实现代码实现顺序栈和链栈的、栈的初始化、入栈、出栈、获取栈顶元素功等功能。顺序栈代码如下:#include “pch.h”#include <iostream>#include<Windows.h>#include<string>using namespace std;#define OK 1#define ERROR 0#define OVE…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

实现顺序栈和链栈的、栈的初始化、入栈、出栈、获取栈顶元素功等功能。

顺序栈

代码如下:

#include "pch.h"
#include <iostream>
#include<Windows.h>
#include<string>

using namespace std;

#define OK 1
#define ERROR 0
#define OVER -2
#define MAXSIZE 100

typedef int Status;		//返回状态

//顺序表结构体
struct SqStack
{ 
   
	char *base;
	char *top;
	int StackSize;
};

//初始化顺序栈
Status InitStack(SqStack &S)
{ 
   
	S.base = new char[MAXSIZE];
	if (!S.base)
	{ 
   
		Sleep(3000);
		exit(OVER);
	}
	S.top = S.base;
	S.StackSize = MAXSIZE;
	return OK;
}

//入栈
Status Push(SqStack &s, char &e)
{ 
   
	if (s.top - s.base == s.StackSize)
	{ 
   
		return ERROR;
	}

	*(s.top) = e;			//元素入栈,栈顶指针+1
	s.top++;
	return OK;
}

//出栈
Status Pop(SqStack &s, char &e)
{ 
   
	if (s.base == s.top)
	{ 
   
		return ERROR;
	}
	e = *(s.top - 1);		//这是出栈元素
	s.top--;
	return OK;
}
//得到栈顶元素
char GetTop(SqStack &s)
{ 
   
	if (s.top != s.base)
	{ 
   
		return *(s.top - 1);
	}
}
//打印栈元素
void PrintStack(SqStack &s)
{ 
   
	if (s.top != s.base)
	{ 
   
		cout << "栈的元素为:";
		int k = 0;
		for (int i = (s.top - s.base); i > 0; i--)
		{ 
   

			cout << *(s.top - 1) << " ";
			--s.top;
			k++;
		}
		for (int j = 0; j <k; j++)
		{ 
   
			++s.top;
		}
	}
}

int main()
{ 
   
	SqStack s;

	InitStack(s);
	int n;
	cout << "请输入初始个数:";
	cin >> n;
	cout << "请输入元素:" << endl;
	for (int i = 0; i < n; i++)
	{ 
   
		char p;
		cin >> p;
		Push(s, p);
	}
	PrintStack(s);
	cout << "栈顶为:" << GetTop(s) << endl;
	char p1;
	Pop(s, p1);
	cout << "出栈后";
	PrintStack(s);
	return 0;
}

结果如下:
在这里插入图片描述

链栈

代码如下:

#include "pch.h"
#include <iostream>
#include<string>
#include<Windows.h>
using namespace std;

#define OK 1
#define ERROR 0
#define OVER -2
#define MAXSIZE 100

typedef int Status;		//返回状态


typedef struct StackNode
{ 
   
	char date;
	StackNode *next;
}*LinkStack;

//初始化链栈
Status InitStack(LinkStack s)
{ 
   
	s = NULL;
	return OK;
}

//入栈
Status Push(LinkStack s, char e)
{ 
   
	LinkStack p;
	p = new StackNode;
	p->date = e;
	p->next = s;
	s = p;
	return OK;
}

//出栈
Status Pop(LinkStack s, char &e)
{ 
   
	LinkStack p;
	if (s == NULL)
	{ 
   
		return ERROR;
	}
	e = s->date;
	p = s;				//用p临时保存栈顶元素的值
	s = s->next;		//修改栈顶指针
	delete p;
	return OK;
}

//取栈顶元素的值
char Getchar(LinkStack s)
{ 
   
	if (s!=NULL)
	{ 
   
		return s->date;
	}
	cout << "栈为空,无法取栈顶元素!" << endl;
	return ERROR;
}

int main()
{ 
   
	StackNode s;
	InitStack(&s);
	char a, b, c;
	a = 'c', b = 'b', c = 'a';
	Push(&s, a);
	Push(&s, b);
	Push(&s, c);
	cout << "出栈前栈顶为:";
	Getchar(&s);
	char e;
	Pop(&s,e);
	cout << "出栈后栈顶为:";

	return 0;
}

结果如下:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170978.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RBF神经网络实验原理_神经网络多元拟合

    RBF神经网络实验原理_神经网络多元拟合RBF神经网络及拟合实例RBF神经网络介绍RBF神经网络结构RBF神经网络算法RBF神经网络逼近算法采用RBF神经网络逼近非线性函数神经网络逼近结果代码如下RBF神经网络介绍RBF神经网络结构径向基函数(RadialBasisFunction,RBF)神经网络是一种单隐含层的三层前馈神经网络,网络结构如下图所示RBF神经网络模拟了人脑中局部调整,相互覆盖接受域(或者说感受域,ReceptiveField)的神经网络结构。与BP神经网络相同,研究人员已经证明RBF神经网络能够以任何精度逼近任

    2025年6月1日
    0
  • dom4j java对象_dom4j解析XML成对象

    dom4j java对象_dom4j解析XML成对象最近不太忙,发现现在服务之间的交互都是通过xml进行的,所以今天理了一下xml的两种解析方式。首先是最流行的dom4j解析。先解析,然后通过反射转成对象。用到的jar:dom4j-1.6.1.jarjaxen-1.1.1.jar1.xml字符串转成对象:class=”java”name=”code”>/***解析XMl字符串数据,转化成对象,并返回*@paramxmlxml字符串…

    2022年6月21日
    25
  • COM聚合技术中的QueryInterface

    COM聚合技术中的QueryInterface最近在看COM聚合技术时遇到一个关于QueryInterface的问题。在《COM技术内幕》和《COM原理与应用》中都是寥寥数句带过,看起来很易理解,我却看了许久才有所领悟。先说明一下,为了节省篇幅,对于一些约定俗成的代码和变量,下文不再进行说明,如内部组件指向外部组件的m_pUnknownOuter和外部组件指向内部组件的m_pUnknownInner等,这些内容在相关书籍都有描述。问题

    2022年7月21日
    10
  • Alex 的 Hadoop 菜鸟教程: 第4课 Hadoop 安装教程 – HA方式 (2台服务器)

    Alex 的 Hadoop 菜鸟教程: 第4课 Hadoop 安装教程 – HA方式 (2台服务器)具体的讲解一下如何将hadoop安装成HA模式

    2022年6月4日
    24
  • C语言实现PID算法:位置式PID和增量式PID[通俗易懂]

    原创者微信公众号PID算法可以说是在自动控制原理中比较经典的一套算法,在现实生活中应用的比较广泛。大学参加过电子竞赛的朋友都应该玩过电机(或者说循迹小车),我们要控制电机按照设定的速度运转,PID控制在其中起到了关键的作用。说来惭愧,大学这门课程学的不咋滴,老师讲的课基本没听进去过。直到后面接触竞赛,算是对PID有了很基础的一点点认识,直到现在工作实际应用的…

    2022年4月11日
    111
  • shiro框架的基本理解[通俗易懂]

    shiro框架的基本理解[通俗易懂]1.简介shiro是一个安全框架,可以进行认证、授权、密码加密、会话管理从外部来解析shiro框架:Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManage

    2022年9月3日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号