春节学习之从入门到放弃学习 ~~~废材大学几年没学,从头开始系列01

大年初四,春雨绵绵,闲着在家实在没有什么事,这个年纪好多小伙伴都玩不起来啦,于是我想到了学习,学习,大概这个号忘了几年的密码,才想起来,发现还是特么学习好晚,好打发时间。。。

上午,一家人坐在沙发前,看江西卫视的天龙八部,记得第一次看时还是在小学的时候,那个时候可好看啦,要是现在看书有那个时候有劲就好啦。。。233 因为马上要找工作,以前看的数据结构,连概念都不知道啦,从头再来,从入门到放弃系列。。。从定义开始。。。

栈stack):只允许在一端进行插入或删除操作的线性表。首先栈是一种线性表,但是限定这种线性表只能在某一端进行插入和删除操作。

栈的基本操作:

InitStack(&S):初始化一个空栈S

StackEmpty(S):判断一个栈是否为空,若S为空返回true,否则返回false

Push(&S,&x):进栈,若栈S未满,将x加入使之成为新栈顶

Pop(&S,&x):出栈,若栈S非空,弹出栈顶元素,并用x返回

GetTop(S,&x):读栈顶元素,若栈S非空,用x返回栈顶元素

ClearStack(&S):销毁栈,并释放栈S占用的存储空间

1.顺序栈的实现

栈的顺序存储称为顺序栈,它是利用一组地址连续的存储单元存放自栈底到栈顶的数据元素,同时附设一个指针指示当前栈顶的位置

#define MaxSize 50
typedef struct {
      Elemtype data [MaxSize];
      int top;
}  SqStack;

栈空条件:S.top==-1; 栈满条件:S.top==MaxSize-1; 栈长:S.top+1

顺序栈的基本运算

初始化

void InitStack(&S) {
s.top=-1;
}

判断空

bool StackEmpty(S) {
if(s.top==-1)
return true;
else
return false;
}

进栈

bool Push(SqStack &S, ElemType x) {
if(S.top==MaxSize-1)
return false;
S.data[++S.top]=x;
return true;
}

出栈

bool Pop(SqStack &S,ElemType &x) {
if(S.top==-1)
return false;
x=S.data[S.top--];
return true;
}

读栈顶元素

bool GetTop(SqStack S,ElemType &x) {
if(S.top==-1)
return false;
x=S.data[S.top];
return true;
}

栈的链式存储结构

采用链式储存的栈称为链栈,链栈的优点是便于多个栈共享储存空间和提高其效率,且不存在栈满上溢的情况。通常采用单链表实现,并规定所有操作都是在单链表的表头进行的

typedef struct Linknode {
ElemType data;
struct Linknode *next;
} *LiStack;

原文地址:https://www.cnblogs.com/yitian09/p/10356675.html

时间: 2024-10-02 15:07:27

春节学习之从入门到放弃学习 ~~~废材大学几年没学,从头开始系列01的相关文章

小白学习H5从入门到放弃

话不多说直接进入主题: 1.什么是HTML语言 HTML5是用于取代1999年所制定的 HTML 4.01 和 XHTML 1.0 标准的 HTML 标准版本,现在仍处于发展阶段,但大部分浏览器已经支持某些 HTML5 技术.HTML 5有两大特点:首先,强化了 Web 网页的表现性能.其次,追加了本地数据库等 Web 应用的功能.广义论及HTML5时,实际指的是包括HTML.CSS和JavaScript在内的一套技术组合.它希望能够减少浏览器对于需要插件的丰富性网络应用服务(plug-in-b

深度学习:从入门到放弃

https://zhuanlan.zhihu.com/p/22976342 首发于深度学习:从入门到放弃 写文章登录 FCN学习:Semantic Segmentation 余俊 1 年前 感谢@huangh12 @郑途 @麦田守望者对标签图像生成的研究和讨论,这几天研究了一下,补充如下. -----------------------------------------------------分割线------------------------------------------------

学习 Vue ,从入门到放弃

最近项目刚完成,手上工作稍微轻松些,准备储备下技术,为未来挑战做好准备. 之前项目用的较多的是angulajs,不过版本较老,还停留在1.5x系,虽然结合了webpack,es2015等前沿技术,但理解并不深入.也做个两个react的项目和一个react-native小东西,都是不懂现查资料,没有系统学习过.三大前端框架就没接触过Vue了,所以打算拿它从小白学起,也顺便写个完整学习心得. 以前学习angularjs是在菜鸟教程学的,看了2天直接上了项目,第一个项目用的还是原始方式,html文件中

[补档][从入门到放弃]——网络流 学习索引

前篇 由于某篇博文已经长到我自己看不下去的地步,又不忍心删,所以就有了这篇索引,方便自己找,也方便来访的客人看嘛(真的会有人来看吗啊喂) 最长的博文 2017-7-29 大佬讲课笔记 网络流--从入门到放弃 没错,就是它= = 各种题解的索引 搭配飞行员 士兵占领 王者之剑 happiness 切糕 餐巾 血帆海盗

现代C++学习笔记之一入门篇:智能指针(C++ 11)

原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 在现代 C++ 编程中,标准库包含智能指针,该指针用于确保程序不存在内存和资源泄漏且是异常安全的. 在现代 C++ 中,原始指针仅用于范围有限的小代码块.循环或者性能至关重要且不会混淆所有权的 Helper 函数中. 1 void UseRawPointer() 2 { 3 // Using a raw pointer -- not recommended

MongoDB索引(一) --- 入门篇:学习使用MongoDB数据库索引

这个系列文章会分为两篇来写: 第一篇:入门篇,学习使用MongoDB数据库索引 第二篇:进阶篇,研究数据库索引原理--B/B+树的基本原理 1. 准备工作 在学习使用MongoDB数据库索引之前,有一些准备工作要做,之后的探索都是基于这些准备工作. 首先需要建立一个数据库和一些集合,这里我就选用一个国内手机号归属地的库,大约32W条记录,数据量不大,不过做一些基本的分析是够了. 首先我们建立一个数据库,叫做db_phone,然后导入测试数据.测试数据就是一些手机号归属地的信息.单个文档长这个样子

Struts学习傻瓜式入门篇

或许有人觉得struts不容易学,似乎里面的一些概念让未接触过的人迷惑,MVC1.MVC2.模式……我写这篇文章是想让从来没有接触过struts的人,能有个简单的入门指引,当然,系统地学习struts是必要的,里面有很多让人心醉的东东,那是后话了. 该案例包括首页,用户登陆.网站向导页面.就这么简单,没有深奥的struts概念,主要靠动手,然后用心体会. WEB Server用tomcat4.到http://jakarta.apache.org下载struts1.1,把zip文 件释放到c:\s

<ASP.NET4 从入门到精通>学习笔记3

第三部分,状态管理与缓存 何为状态管理,起始对于web而言,经过前面章节的讲解,已经理解,对于web程序,就是一个无状态的程序,每次的请求与每次的响应,两者之间本身就是独立存在的,这一点对于早期的静态网页来说,倒没什么,因为每次的请求和响应其实都是固定不变的.但是到了动态网页时代,就不行了,web开发的很大一部分工作将变为状态管理.这一点,可能举一个例子,最具有代表性,比如说购物车,那么对于购物车而言,就需要知道他的访问者是谁?虽然他们可以在不同的页面切换,但是购物车不能够变化,此时就是一种状态

linux入门-第一周学习笔记

Linux新手入门-第一周学习笔记 一.安装系统注意的问题 1.磁盘分区: 以分配给系统200G内存大小为例: (1)给 /boot 200M大小即可,由于/boot 仅存放内核相关启动文件.不需要给太大的分区. (2)给 / 50G大小,根用户下要存放很多的文件. (3)给/testdir 50G大小,这是我们做实验用到的文件. (4)给swap 4G大小,由于swap是交换分区,其大小推荐是内存的1.5倍~2.0倍 注意:CentOS6.8的文件系统为ext4,而CentOS7.2的文件系统