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

数据结构第三章学习总结

时间:2020-04-26 18:51:07      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:sele   int   自己   循环   bsp   struct   ret   栈和队列   分享   

 

1.这一章主要学习了栈和队列的一些基本操作。
(1)栈(LIFO)分为顺序栈和链栈,遵循先进后出的原则。
顺序栈的一些基本操作:

typedef struct
{
  SElemType data[MAXSIZE];
  int top;//标记栈顶
  int stacksize;//标记栈的最大容量      
}SqStack;//顺序栈的定义

//初始化栈,让栈顶标志指向栈底 
void init(SqStack &s)
{
  s.top=0;
  s.stacksize=MAXSIZE;    
}

//判断栈满,当栈顶标志指向栈最大容量时,说明栈满了 
bool stackfull(SqStack s)
{
    if(s.top==s.stacksize)
        return true;
    else    return false;
}

//判断栈空,栈顶标志指向栈底,说明是空栈
bool stackempty(SqStack s)
{
    if(s.top==0)    return true;
    else    return false;
} 

//入栈,元素e压入栈顶,栈顶标志加1,入栈前要判断是否栈满 
void push(SqStack &s, SElemType e)
{
    s.data[s.top++]=e;
} 

//出栈,栈顶标志减1,获取栈顶元素e, 出栈前要判断是否栈空 
void pop(SqStack &s, SElemType &e)
{
    s.top--;
    e=s.data[s.top];
} 
 

(2)队列(FIFO)分为循环队列和链队,遵循先进先出的原则。
队列的一些基本操作:

typedef struct
{
    QElemType data[MAXSIZE];
    int front;//头指针 
    int rear;//尾指针 
}SqQueue;//队列的定义

//初始化,直接让头指针和尾指针等于0
void init(SqQueue &q)
{
    q.front=q.rear=0;
} 

//判断队列是否满
bool queuefull(SqQueue q)
{
    if(q.rear+1)%MAXSIZE==q.front;
        return true;
    else    return false;
} 

//判断队列是否为空
bool queueempty(SqQueue q)
{
    if(q.front==q.rear)    return true;
    else    return false;
} 

//入队
void enqueue(SqQueue &q, QElemType e)
{
    q.data[q.rear]=e;
    q.rear=(q.rear+1)%MAXSIZE;
} 

//出队
void outqueue(SqQueue &q, QElemType &e)
{
    e=q.data[q.front];
    q.front=(q.front+1)%MAXSIZE;
} 

2. 有时候找不到思路的时候会上网去查查别人的代码,时常会被奇妙的思路惊到。事后想想,其实就是自己对于书本内容理解不够透彻,其次是缺少实操真正去运用学到的东西,包括不同数据结构之间的选择等等。需要打下坚实的基础才能够高效地完成需求。

3. 有个公众号叫做诗and可能性,里面有分享一些很有趣的计算机资源。

4. 继续好好巩固一下基础吧。

数据结构第三章学习总结

标签:sele   int   自己   循环   bsp   struct   ret   栈和队列   分享   

原文地址:https://www.cnblogs.com/cbs-2397812053/p/12781323.html

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