码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-02-08 21:56:43      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:数据   nod   插入   push   元素   list   maxsize   返回   its   

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

  上午,一家人坐在沙发前,看江西卫视的天龙八部,记得第一次看时还是在小学的时候,那个时候可好看啦,要是现在看书有那个时候有劲就好啦。。。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

标签:数据   nod   插入   push   元素   list   maxsize   返回   its   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!