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

Posted yitian09

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了春节学习之从入门到放弃学习 ~~~废材大学几年没学,从头开始系列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;

 

以上是关于春节学习之从入门到放弃学习 ~~~废材大学几年没学,从头开始系列01的主要内容,如果未能解决你的问题,请参考以下文章

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

机器学习之深度学习入门

xilinx FPGA课程学习总结

学习 Vue ,从入门到放弃

one 一只小红帽的linux学习笔记,从入门到放弃,再到入门

Vue.js的从入门到放弃进击录