栈(链表实现)

java单链表实现栈 栈的实现方式二:使用单链表来实现栈package stack; /** * * <p> * 功能描述:java栈的链表实现方式 * 编程思想:链表栈中包括结点类和栈顶结点,初始化时将栈顶结点指向null * 1、添加结点时将新加入的结点指向原本的栈顶结点,将新的栈顶结点指向新插入的节点 * 2、出栈时栈顶出栈并将新栈顶结点指向原栈顶结点 * </p> * ... 阅读详情


#include<stdio.h>
#include<stdlib.h>
typedef int ElementType;
struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode Stack;
struct Node
{
    ElementType Element;
    PtrToNode  Next;
};

int IsEmpty(Stack S);
Stack CreateStack();
void MakeEmpty(Stack S);
void Push(ElementType x,Stack S);
void Pop(Stack S);
ElementType Top(Stack S);
int IsEmpty(Stack S)
{
    return S->Next==NULL;
}
void MakeEmpty(Stack S)
{
    if(S==NULL)
    {
	printf("out of space");
    }
    else
	while(S->Next!=NULL)
	    Pop(S);
}
Stack CreateStack()
{
    Stack S;
    S=malloc(sizeof(struct Node));
    if(S==NULL)
	printf("out of Space");
    else
    {
	S->Next==NULL;
	return S;
    }
}
void Push(ElementType x,Stack S)
{
    Stack TmpCell;
    TmpCell=malloc(sizeof(struct Node));
    if(TmpCell==NULL)
	printf("out of space \n");
    else
    {
	TmpCell->Element=x;
	TmpCell->Next=S->Next;
	S->Next=TmpCell;
    }
}
ElementType Top(Stack S)
{
    if(S->Next==NULL)
    {
	printf("Empty stack \n");
	return 0;
    }
    return S->Next->Element;
}
void Pop(Stack S)
{
    Stack FirstCell;
    if(S->Next==NULL)
	printf("Empty stack \n");
    else
    {
	FirstCell=S->Next;
	S->Next=FirstCell->Next;
	free(FirstCell);
    }
}
void print(Stack S)
{
    Stack TmpCell;
    if(S->Next==NULL)
	printf("kong \n");
    else
    {
	TmpCell=S->Next;
	while(TmpCell)
	{
	    printf("%d ",TmpCell->Element);
	    TmpCell=TmpCell->Next;
	}
	printf("\n");
    }
}
void main()
{
    Stack s;
    s=CreateStack();
    print(s);
    int i;
    for(i=0;i<10;i++)
	Push(i,s);
    print(s);

    Pop(s);
    print(s);
    printf("top=%d \n",Top(s));
}


c++ 栈的链表实现 /* 栈的链表实现 */ #include #include using namespace std; template struct Node { T date; Node *next; Node() { next=NULL; } Node(T element) { this->date=element; next=NULL; } }; template cl 阅读详情

相关推荐

最全的链表、堆栈和队列

最全的链表、堆栈和队列实现:带(不带)头结点的单链表、带(不带)头结点的双链表、循环链表、顺序(链式)堆栈、顺序(链式)队列,用C语言实现,简单易懂。

栈(stack)栈的链式存储(链表)

栈的简单概念,及详细图解(附带代码)快来看吧!!!

ejfjnxnnd的博客 1901

抄表程序员的DLMS/COSEM协议实战:从抓包到解析,手把手教你读懂IEC62056报文

本文深入解析DLMS/COSEM协议在智能电表通信中的应用,从报文捕获到数据解析的全流程实战指南。涵盖HDLC帧解析、应用层连接建立、数据请求/响应解码等核心内容,并提供Wireshark配置、OBIS代码速查表等实用工具,帮助开发者快速掌握IEC62056标准下的电能表通信技术。

weixin_29178069的博客 299

数据结构之链表、栈

数据结构之链表、栈

BDS的朝圣路 753

三维重建之条纹投影结构光(三)——相高模型标定

接上面两文: 三维重建之条纹投影结构光(一)https://blog.youkuaiyun.com/beyond951/article/details/123361852?spm=1001.2014.3001.5501三维重建之条纹投影结构光(二)——四步相移+三频外差法https://blog.youkuaiyun.com/beyond951/article/details/123769596?spm=1001.2014.3001.5501接下来对相高模型进行标定,其推导过程如下图所示 ...

beyond951的博客 4876

从三个角度理解知识图谱

2012年谷歌首次提出“知识图谱”这个词,由此知识图谱在工业界也出现得越来越多,对于知识图谱以及相关概念的理解确实也是比较绕。自己在研究大数据独角兽Palantir之后开始接触知识图谱,也算对其有了一定了解,这里从三个角度总结一下怎么去理解知识图谱。 几个基本概念:本体、实体、知识库、知识图谱 1、本体是概念的集合,是大家都公认的概念框架,一般不会改变如“人”、“事”、“物”、 “地”、“组...

JavaChaoCo的博客 6901

数据结构与算法(七)--使用链表实现栈

之前我们已经学习了链表的所有操作及其时间复杂度分析,我们可以了解到。。本章我们通过链表去实现栈,当然我们也会讲到用链表实现另一个数据结构–队列。并且比较用数组实现和用链表实现他们之间的差异。

学习不止境的博客 1405

WINCC8.1工业组态软件安装与授权配置指南

SCADA系统作为工业自动化控制的核心平台,通过实时数据采集与监控实现生产流程可视化。WINCC作为西门子旗舰级组态软件,其8.1版本凭借稳定的运行时环境在汽车制造、流程工业等领域广泛应用。本文从工业控制系统软件安装规范切入,重点解析WINCC8.1与Automation License Manager的协同工作原理,详细说明包括系统环境检查、安装包校验、授权文件配置等关键技术环节。针对工程实施中常见的内存配置不足、授权管理器报错等典型问题,提供经过现场验证的解决方案,特别适用于需要进行产线监控系统升级维护

cqwf95925的博客 1651

链表----栈

链栈: 单链表的基础上实现即可 用单链表的头插和头删代替表尾进行插入和删除 push(头插) pop(头删) 入栈操作(相当于单链表的头插函数) bool Push(PLStack ps,ELEM_TYPE val) { assert(ps != NULL); if (ps == NULL) { return false; } struct LStack* pnewnode = (struct LStack*)malloc(1 * sizeof(ELEM_TYP...

小程的博客 1650

Xilinx Aurora 8B/10B IP核详解和仿真

Xilinx Aurora 8b/10b IP核的详解,以及使用与仿真示例,对IP核的配置和如何仿真有非常详细的说明,除了对IP核官方文档的内容进行了解析以外,还对GTX引脚的选择等比较容易混淆和不好理解的地方进行了说明。最后对IP核的仿真运行进行了STEP BY STEP 的说明,对仿真的结果也进行了简要的说明。 该文档对Xilinx FPGA和ZYNQ SOC下 AURORA 8B/10B IP核的使用提供了一个快速上手的指导。

weixin_43354598的博客 1万+

基于STM32的智能浇花系统毕业设计(全部资料)

摘要:本文设计了一种基于STM32单片机的智能浇花系统,集成了环境温湿度检测、土壤温湿度监测、LCD显示、Wi-Fi联网及手机APP远程控制等功能。系统通过传感器实时采集环境参数,自动控制水泵工作实现智能灌溉,同时支持用户通过手机APP远程监控和调节。论文详细阐述了硬件选型、软件设计及系统测试过程,验证了系统的稳定性和实用性。该设计为家庭园艺提供了智能化解决方案,具有节水高效、操作便捷等特点。关键词:STM32;智能灌溉;远程控制;环境监测;Wi-Fi通信。

3254968421的博客 1194

C++数据结构(3.1):栈的链表实现详解

本文介绍了使用C++链表实现栈数据结构的方法。栈是一种后进先出(LIFO)的线性结构,支持压栈(push)和弹栈(pop)操作。通过链表节点(Node)存储数据,栈类(Stack)维护头指针和大小计数器,实现了O(1)时间复杂度的核心操作。相比数组实现,链表栈具有动态分配内存、无需预定义大小等优势,但需要额外指针空间。文章详细讲解了节点定义、类结构、核心功能实现(压栈/弹栈)、辅助功能(获取栈顶/大小)以及内存管理,并提供了完整的C++模板实现代码和测试用例。这种实现方式适用于元素数量变化大的场景。

2503_90937448的博客 1395

2023华为OD机试真题B卷 Python 实现【最长的元音子串长度】

定义当一个字符串只有元音字母(a,e,i,o,u,A,E,I,O,U)组成,称为元音字符串,现给定一个字符串,请找出其中最长的元音字符串,并返回其长度,如果找不到请返回0, 字符串中任意一个连续字符组成的子序列称为该字符串的子串

MISAYAONE的博客 900

java利用链表实现栈

在前面,写了怎么利用数组来实现栈,以及动态数组的利用。今天我们就利用链表的方式来实现栈,我们知道链表存储数据只要内存够,就可以放足够多的数据,这也就解决了数组带来的弊端。 链表类: public class LLNode { private Object data;//存放数据 private LLNode next;//指向下一个节点 public LLNode(){ } public...

《落程魄序》作者“落魄哥”的博客 4998

10、进化动力学谱分析中的开放性问题

本文探讨了进化动力学谱分析中的若干开放性问题,重点围绕进化算法的性能与设计理论展开。文章首先介绍了规范模型及其线性动力学特性,随后深入分析了在实际应用中偏离理想情况的两个关键因素:有限种群和双亲重组。在此基础上提出了三个核心开放性问题:寻找最优传输矩阵以实现全局最优解的高效搜索、无限与有限种群模型谱之间的关系、以及卡林定理在多遗传算子下的推广可能性。通过谱条件、快速混合性与首次命中时间的关系分析,文章进一步讨论了全局吸引与快速收敛的理论基础,并提出了未来的研究方向,包括理论深化、实验拓展与跨学科融合,旨在为

cuda7parallel的博客 80

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

栈的实现之用链表实现

用链表实现栈 上次我们用数组实现了栈,数组结构实现栈比较容易,那么用链表该如何实现栈呢?

欢迎留言技术探讨 656

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

基于链表实现栈

用链表实现栈定义栈接口话不多说,上代码 关于链表的实现请看我之前的博客: 实现最基本的动态数据结构链表 定义栈接口 将栈的基本操作定义在接口中,实现类去具体实现。 话不多说,上代码 import stack.Stack; /* * 用链表实现栈 * */ public class LinkedListStack<E> implements Stack<E> { p...

weixin_43400170的博客 278

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

用链表实现栈

单链表作为底层,实现栈的数据结构 栈的实现: package SingleLinkedListStack; import ArrayStack.Stack; import SingleLinkedList.Node; import SingleLinkedList.SingleLinkedList; /* * 用链表作为栈的底层 */ public class SingleLinkedListStack <E> implements Stack<E>{ // 用链表作为栈的底

无雨 1662

基于双向链表实现的栈

看了LinkedList的源码,明白了LinkedList底层使用的是双向链表,一直想找个机会实现一下双向链表,今天写到力扣的每日一题20.有效的括号,正好此题需要使用到栈,所以借此机会来自己实现一下基于双向链表实现的栈,实现栈之前要了解以下知识 1.什么是双向链表 双向链表是指一个节点有一个数据域,两个指针域,一个指针域指向上一个节点,一个指针域指向下一个节点,现在将指向上一个节点的指针域命名为pre,将指向下一个节点的指针域命名为next,节点命名为node,一个合格的双向链表如下图所示 中间的nod

Gee_Zer的博客 4524

链表实现栈

package com.Stack; /** * @Auther: 大哥的叔 * @Date: 2019/7/31 17:27 * @Description: */ public class LinkedListStackDemo { public static void main(String[] args) { LinkedListStack...

大哥的叔的博客 1万+

#栈--基于链表实现栈

3.4.2.2 基于本地创建的链表实现栈 package com.yzh.maven.entity; import com.yzh.maven.base.dao.MyStackDao; public class MyLinkedStack<E> implements MyStackDao<E>{ private int size; private MyDobbleL...

流年梦里风起舞 381

链表栈的实现

#include "iostream" using namespace std; typedef struct student { int data; struct student * next; }node;//定义结构体节点 typedef struct linkqueue { node * first; node * rear; }stack;//定义队列结构,首指针和尾指针

肖氏专栏 1262

用单链表实现栈

一)栈 栈:先进后出、后进先出 二)用单链表实现栈 第一步:初始化单链表结构 /** * 用单链表实现栈 * @author ouyangjun */ public class SingleChainTableStack<E> { /** 初始化单链表结构 */ static class Node<E> { E i...

p812438109的专栏 2094

栈的C++单链表实现

使用C风格的实现,栈的内部使用单链表结构实现。实现接口为:创建表头、入栈、出栈、反转、打印、清空 代码结构如下: SingleList.h:数据结构的声明和定义 main.cpp:测试数据结构: SingleList.h: #pragma once #include<iostream> #include<string.h> using namespace st...

m0_38084180的博客 883
上一篇: 双链表
下一篇: 栈(数组实现)
小凡0208
博客等级 码龄16年 18粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值