C语言表的理解及介绍

前言

C语言表的理解及介绍


一、功能受限的表:

栈:只有一个进出的出入口的表结构,先进后出,FILO
      顺序栈:
          数据项:
              存储元素的内存首地址
              栈的容量
              栈顶的位置
          运算:
              创建、销毁、入栈、出栈、栈满、栈空、栈顶
      注意:
          栈顶指向顶部的第一个数据,称为满增栈
          栈顶指向接下去要入栈的位置,成为空增栈
      链式栈:
          数据域:
              栈顶
              节点数量
          运算:
              创建、销毁、入栈、出栈、栈空、栈顶

  
  栈的应用:
       1、函数的调用(栈内存)
       2、生产者和消费者模型(栈作为仓库的角色)
       3、表达式的解析
  栈的常见笔试面试题
       某个序列是入栈顺序,判断那个序列为合理的出栈顺序
       1 2 3 4 5
       3 1 2 4 5 no
       1 2 3 4 5 yes
       
队列:一个端口进,另一个端口出,先进先出 FIFO
      顺序队列:
          数据项:
              存储元素的内存首地址
              容量
              队头
              队尾   接下去要入队的位置
          运算:
              创建、销毁、入队、出队、队空、队满、队头、队尾、元素个数
        
        顺序队列是由一维数组+队头位置front+队尾位置rear组成,入队时rear+1,出队时front+1,为了能够让队列反复使用,我们要把一维数组想象成一个环,因此rear、front加1后要用队列的容量求余
             rear=(rear+1)%cal;
             front=(front)%cal;

             如何判断队空: front==rear
             如何判断队满   front==(rear+1)%cal
                 1、代价是空一个位置不能使用(常考)
                 2、添加一个数据项标记队列是空或者满(元素个数)
             如何计算元素的数量:
                 (rear-front+cal)%cal
      链式队列:
          由若干个节点组成的队列
          数据项:
              对头指针
              队尾指针
              节点数量
        
          运算:
              创建、销毁、队空、入队、出队、队头、队尾、数量
        
      队列的应用:
          1、消息队列
          2、树的层序遍历
          3、图的广度优先遍历
          4、封装线程池、数据池

      常见的笔试面试题:
          使用两个栈来模拟一个队列的功能
              从栈1到栈2 必须一个不留地入栈
              如果栈2不空,栈1一定不能入栈2

二、封装链表

1、单链表
原因:尾添加的效率低、非法下标判断也很低
节点:
   数据域
   指针域
链表数据项:
   头指针
   尾指针
   节点数量
2、静态链表
   节点:
      数据域
      游标
   静态链表的节点存储在连续的内存中,通过游标来访问下一个节点
   这种链表在插入删除时只需要修改游标的值,而不用重新申请、释放内存从而达到链表结构的效果
   这样子做牺牲了随机访问的功能,主要是提供给没有指针的编程语言实现单链表的一种方法
3、循环链表
   链表的最后一个节点的next不再指向NULL,而是指向头节点,这种链表叫做单向循环链表,简称循环链表,它的好处是可以通过任意节点遍历整个链表
4、双向链表
   节点:
      前驱指针
      数据域
      后继指针
   链表数据项:
      头节点
      节点数量
   双向链表的特点:
      1、从任意节点都可以遍历整个链表
      2、删除、增加就不需要定位带操作节点的上一个
      3、如果已知节点的数量,删除已知位置节点,可以选择从前到后或者从后到前进行遍历,从而提高链表的操作效率

总结

以上,有错误,还请指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值