数据结构(严蔚敏)之四——链栈之c语言实现

【数据结构系列】严蔚敏C语言版算法实现并附带详细注释(逐步更新) 数据结构在编程过程中是不可或缺的,是举足轻重的,想要编写出一个好的程序,学好数据结构这门学科是必经之路。本文是各种数据结构实现的目录文章,我会在我学习数据结构这门课程的过程中逐步更新其中的内容。................................. 阅读详情

编写一个程序实现链栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:

(1)初始化链栈

(2)链栈置空

(3)入栈

(4)出栈

(5)取栈顶元素

(6)遍历链栈


链栈的功能实现:

#include <stdio.h>
#include <malloc.h>

#define ERROR 0
#define OK 1
#define TRUE 1
#define FALSE 0
typedef int ElemType;
typedef int Status;

typedef struct node
{
	ElemType data;
	struct node *next;
}StackNode;

typedef struct
{
	StackNode *top;
}LinkStack;

//初始化 
void InitStack(LinkStack *s)
{
	s->top = NULL;
	puts("链栈初始化完成!");
}

//将链栈置空
Status SetEmpty(LinkStack *s)
{
	StackNode *p = s->top;
	while(p)
	{
		s->top = p->next;
		free(p);
		p = s->top;
	}
	puts("链栈已置空!");
	return OK;
}

//压栈
Status Push(LinkStack *s, ElemType e)
{
	StackNode *p;
	p = (StackNode *)malloc(sizeof(StackNode));
	p->data = e;
	p->next = s->top;//把要压入的元素内存单元的next指针指向栈顶
	s->top = p;//栈顶指向新压入的元素内存单元
	return OK;
}

//弹栈
Status Pop(LinkStack *s, ElemType *e)
{
	StackNode *p = s->top;
	if(s->top == NULL)
	{
		puts("栈空, 不能进行弹栈操作!");
		return ERROR;
	}
	s->top = p->next;//让栈顶指针指向前一个元素,
	*e = p->data;
	free(p);//释放栈顶元素内存空间
	return OK;
}

Status GetTop(LinkStack *s,  ElemType *e)
{
	if(s->top == NULL)
	{
		puts("栈空, 无栈顶元素!");
		return ERROR;
	}
	*e = s->top->data;
	return OK;
}

//打印栈 
Status PrintStack(LinkStack *s)
{
	StackNode *p;
	p = s->top;
	while(p)
	{
		printf("%d   ", p->data);
		p = p->next;
	}
	puts("");
	return OK;
}

测试代码段

int main()
{
	LinkStack s;
	InitStack(&s);
	int n, e;
	printf("请输入链栈长度:\n");
	scanf("%d", &n);
	puts("请输入要录入的数据:");
	while(n--)
	{
		int x;
		scanf("%d", &x);
		Push(&s, x);
	}
	PrintStack(&s);
	GetTop(&s, &e);
	printf("栈顶元素为:%d\n",e);
	puts("8入栈后:");
	Push(&s,8);
	PrintStack(&s);
	Pop(&s, &e);
	printf("弹栈元素是:%d\n", e);
	puts("弹栈后:");
	PrintStack(&s);
	SetEmpty(&s);
	return 0;
}

运行结果:




收藏 《数据结构(C语言版)视频全集》—清华大学严蔚敏主讲 eMule资源 下面是用户共享的文件列表,安装eMule后,您可以点击这些文件名进行下载 数据结构(清华严蔚敏)_数据结构01.asf 详情 55.4MB 数据结构(清华严 阅读详情

相关推荐

严蔚敏《数据结构》C语言实现与源代码详解

数组是一种基本的数据结构,用于存储一系列的同类型数据。在内存中,数组通常是一段连续的存储空间,每个元素按照顺序存放。数组的大小(即元素的数量)在初始化时确定,并且在整个数组的生命周期内保持不变。在C语言中,数组可以被视为指针的一个特例,实际上是一个指向连续内存块的指针。数组在内存中的布局可以用下面的代码块来表示:上面的数组在内存中的布局可以简化成下面的形式:数组在逻辑上提供了一种快速访问机制,通过索引可以直接访问任何一个元素,其时间复杂度为O(1)。

weixin_28681379的博客 1203

【数据结构】链栈的基本操作C语言完整代码(初始化,判栈空,入栈,出栈,取栈顶元素,求栈长)

链栈的基本操作C语言完整代码 一、初始化栈 链栈初始化即先构造一个空栈,将栈顶指针top所指的头结点的指针域置空。 //初始化 LinkedStack Init_LinkedStack() { LinkedStack top=(LinkedStackNode * )malloc (sizeof( LinkedStackNode)); if(top!=NULL)//申请空间成功 top->next=NULL;//设置栈

九芒星的博客 3万+

数据结构之顺序栈:严蔚敏C语言实现详解

本文还有配套的精品资源,点击获取 简介:数据结构是计算机科学核心课程,专注于数据的有效存储和操作。栈是数据结构中的基础,其后进先出(LIFO)特性使得它在算法实现中非常重要。顺序栈是栈的一种实现,通过数组在内存中连续存储数据。C语言中顺序栈的实现包括元素的压栈、弹栈和查看栈顶元素等操作。本教程详细介绍了严蔚敏教授的顺序栈实现方法,包括栈的定义、初始化、操作方法和错误处理等。...

weixin_31715353的博客 1439

【数据结构】 链栈的基本操作 (C语言版)

【数据结构】 链栈的基本操作 (C语言版)

weixin_56814370的博客 6461

数据结构C语言实现全集(清华严蔚敏版)

本文还有配套的精品资源,点击获取 简介:《数据结构》是计算机科学的核心课程,关注数据在计算机内的组织和处理。严蔚敏教授的教材广受欢迎,并且本压缩包内含其教材所有C语言实现的代码示例,涵盖各种基础和高级数据结构,包括链表、栈、队列、树、图、排序和查找算法、哈希表等。这些代码不仅是学习理论知识的辅助材料,而且能够有效提升编程技巧,有助于深入理解数据结构,并将其应用于解决实际问题...

weixin_42097508的博客 1430

手把手教你用单结晶体管搭建简易振荡电路(含电路图和波形分析)

本文详细介绍了如何使用单结晶体管(UJT)搭建简易振荡电路,包括电路设计、波形分析和实战技巧。通过具体的电路图和参数计算,帮助电子爱好者和工程师快速掌握UJT振荡器的设计与调试方法,适用于脉冲信号生成和时钟源制作等应用场景。

weixin_29207533的博客 516

【数据结构】链栈的基本操作(C语言)

链栈的基本操作,无头结点,C语言,带注释

weixin_44358957的博客 6134

QMT与通达信代码实战:从预警到交易的自动化实现

本文详细介绍了如何利用QMT量化交易平台与通达信软件实现从预警到交易的全自动化。通过读取通达信预警生成的板块文件,QMT策略可自动执行买卖指令,有效解决手动交易滞后问题。文章提供了完整的代码框架、核心原理拆解及实盘注意事项,帮助投资者构建高效、纪律性的自动化交易系统。

ansible6ops的博客 648

链栈的基本操作(超详细)

本文参考王卓老师的数据结构视频和严蔚敏老师的《数据结构》栈:操作受限的线性表,限定仅在表尾进行插入和删除操作的线性表,即后进先出。这一端被称为栈顶,相对地,把另一端称为栈底。链栈:用链式结构存储的栈(我实际用的是不带头结点的单链表)例子:类似子弹压入弹夹,后放入的子弹可以先从弹夹弹出来。栈是一种操作受限的线性表,虽然操作受限,但是与线性表有点类似,只不过栈的插入和删除都在表尾而已。我实现的链栈其实与不带头节点的链表有很大关系,各位也可以参考下链表来学习链栈。

m0_53679998的博客 2万+

从“Hello World”到区域赛银牌:我的ACM算法打怪升级全记录(附各阶段工具包)

本文记录了作者从编程新手到ACM区域赛银牌获得者的完整学习历程,详细分享了各阶段的算法学习路线、刷题策略和实战经验。涵盖从基础算法到动态规划的系统训练方法,并附赠经过竞赛检验的工具包和资源清单,为算法竞赛爱好者提供实用参考。

weixin_29201859的博客 123

随机森林的可解释性分析(含python代码)

随机森林的“黑箱”特性逐渐凸显,这使得我们难以理解和解释模型内部的工作机制。对于许多应用场景而言,仅仅获得高准确率的预测结果是不够的;了解预测背后的逻辑同样重要,特别是在医疗诊断、金融风险评估等领域。因此,对随机森林进行可解释性分析变得尤为重要。

m0_59257547的博客 3848

链栈基本操作实现(c语言)

#include &amp;amp;lt;stdio.h&amp;amp;gt; #include &amp;amp;lt;stdlib.h&amp;amp;gt; typedef int ElemType; typedef struct node { ElemType data; struct node*next; }*linkStack,stackNode; //链栈初始化 linkStack initLinkStack() {

rj2017211811的博客 5200

超详细!思岚S2激光雷达hector_mapping建图

使用思岚S2激光雷达,在ros平台上利用hector_mapping功能包实现建图功能

m0_50965539的博客 5591

【C语言 数据结构】栈的极简实现

/** *结构体SqStack作为栈 *SqStack由三部分组成 base是作为栈的底指针 top指向栈顶元素上面的空间 StackSize是栈的大小 *@hqweay */ #include #include #include #define STACK_INIT_SIZE 10 #define STACKINCREMENT 2 #define OK 1 #define NO 2

hqweay 的博客 643

Mastercam软件二次开发:使用C#进行Mastercam二次开发

C#(发音为“C Sharp”)是一种现代、面向对象的编程语言,由微软开发,首次发布于2000年。它结合了C和C++的强大功能,同时引入了Java的垃圾回收机制,使得C#在开发效率和运行性能之间找到了一个良好的平衡点。C#的设计目标是提高开发者的生产力,它支持多种编程范式,包括面向对象、泛型、委托和事件等,这使得它成为开发Windows应用程序、Web应用程序、游戏(尤其是使用Unity引擎)和企业级应用的理想选择。

kkchenjj的博客 2214

SAP-ABAP:SAP创建CDS视图(SQL语句创建)实例详解

通过Eclipse和ADT创建CDS视图是SAP开发中的一项重要技能。CDS视图不仅简化了数据建模,还提供了高性能和灵活性。掌握CDS视图的开发和使用,可以帮助你更好地支持SAP S/4HANA和Fiori应用的开发。

baidu_35680696的博客 1825

严蔚敏版数据结构(C语言版)算法实现代码

严蔚敏版数据结构(C语言版)算法实现代码数据结构(C语言版)代码实现线性表顺序表 数据结构(C语言版)代码实现 部分采用C++的语法实现 线性表 顺序表与链表 顺序表 代码如下: #include <bits/stdc++.h> using namespace std; #define MaxSize 100 #define ElemType int #define Status int #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10

weixin_45741097的博客 1万+

Far planner 代码系列(33) 关于real_world_contour和contour_graph

我们知道far planner前部分的流程是这样子的: 对于特定的地图,如下: 我们要从surround_obs_cloud里抽取生成realworld_contour_,如下图所示: 在这时候,每个node的z坐标都是以机器人的高度定的。如图所示: 先去吃饭啦~待会回来在写 ...

博客 763

2021-10-16【严蔚敏数据结构代码实现合集】【c语言学习必备】

线性表 2021-9-14【数据结构/严蔚敏】【顺序表】【代码实现算法2.1-2.7】 2021-9-18【数据结构/严蔚敏】【单链表】【代码实现算法2.8-2.12】 2021-9-18【数据结构/严蔚敏】【静态链表】【代码实现算法2.13-2.17】 2021-9-19【数据结构/严蔚敏】【双向链表】【代码实现算法2.18-2.19】 2021-9-19【数据结构/严蔚敏】【带头结点的线性表】【代码实现算法2.20-2.21】 2021-9-19【数据结构/严蔚敏】【一元多项式的表示及相加、相减、相乘

eternity_memory的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

《数据结构与算法》C语言实现,严蔚敏版;菜鸟小白初学《Data Structure》

标题:《数据结构与算法》C语言,严蔚敏版 我的笔记,代码和感悟。 目录: 线性结构 线性表: 树形结构 图形结构 查找 排序

m0_37976933的博客 4285

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C语言实现数据结构——顺序栈与链栈

C语言实现顺序栈与链栈的基本功能。

chfens的博客 2368

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

严蔚敏数据结构 线性表的实现代码(C语言)可直接运行

这是我在大二学习数据结构中的代码实践,将《数据结构》(严蔚敏)中的伪代码用C语言实现。 本人水平有限,难免存在一些错误,欢迎各位同学批评指正。如果这篇文章对您有所帮助,请留下一个赞吧,谢谢! 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 shun'xushixian 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容..

ZeeON.N的博客 2432

数据结构(C语言版)严蔚敏 习题详解(持续更新!)

笔者中山大学硕士,医学生+计科学生的集合体,机器学习爱好者。 现在正在进行数据结构的学习。 听的课程的是 MOOC浙江大学2012版。 学习教材为 数据结构(C语言版)严蔚敏 吴伟民 清华大学出版社 现分享总结的部分习题详细解析。欢迎批评指正! 为方便查阅,直接给出各章节部分习题详细解析的知乎链接。 数据结构(C语言版)严蔚敏——第一章 绪论(预备知识) 数据结构(C语言版)严蔚敏——第二章 线性...

Yukyin 3481

【免费下载】 严蔚敏数据结构C语言版资源下载

严蔚敏数据结构C语言版资源下载 【下载地址】严蔚敏数据结构C语言版资源下载 本书的第1章综述数据、数据结构和抽象数据类型等基本概念;第2章至第7章从抽象数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用;第8章综合介绍操作系统和编译程序中涉及的动态存储管理的基本技术;...

gitblog_09801的博客 1411

严蔚敏数据结构C语言实现栈的基本操作

#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OVERFLOW -1#define OK 1#define ERROR 0typedef int Status;typedef int SElemType;typedef struct...

yanjinin的博客 3878

《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

转载自:https://www.cnblogs.com/kangjianwei101/p/5221816.html 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑 链接☛☛☛《数据结构》课本源码合辑 习题集全解析 链接☛☛☛《数据结构题集》习题解析合辑 ★教材及习题源码下载★ 链接☛☛☛ 严蔚敏《...

IceSea7 4024
上一篇: 数据结构(严蔚敏)之三——顺序栈之c语言实现
下一篇: 数据结构(严蔚敏)之一——顺序表之c语言实现
君只见独不见
博客等级 码龄12年 99粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值