表的应用(链表补充)

#链表的应用

#书中链表的应用举出了三个例子:多项式ADT(使用链表来存储多项式并进行与之相关的操作),第二则是“基数排序”,可以理解为“桶排序”的升级版,即:先确定一个基,先把要排列的数按最低位进行桶排序,然后是倒数第二高的位,直到最高位位置为止,这个实现起来不难,值得注意的是,前边对低位的排序保证了后边排序高位时进入桶的顺序是从低到高(有兴趣的可以自己实现一下试试,不了解桶排序的也应该去百度一下)。

#在我看来应该还是第三个更为有趣:多重表。相对于前两种,这用应用可能更加偏向实用。众所周知,有一维数组,就有高维数组,相应的,与一维的链表相应的,也有多重链表:下边放出多重表的实现图


容易看出,它是一个由多组循环链表构成的二维结构,我们用表头作为坐标轴上的点,两组链表构成了x,y轴。如果某个元素同时具有Cn,Sm两种属性,那么就创造一个新的结点,将它添加到以Cn为表头和以Sm为表头的链表的交点。而使用循环链表则使得沿坐标轴的查找操作变得更加方便。

和一维链表一样,使用多重链表的目的是节约空间,在使用多维数组空间利用率比较低的时候,多重表将是一个不错的选择。

#在本节末,本书提出了链表的另一种实现方法:游标实现。

游标实现的优势是避免了使用malloc函数和free函数,从而适应了那些无法使用指针的语言。它的缺点则是必须知道链表的容量,从而确定制作多大的游标(一个未放入值的链表)模拟的malloc函数和free函数就是通过在游标中存取节点实现的。感兴趣的读者可以自己实现以下,再此便不再赘述。

#栈:

栈是一种特殊的表,它只允许对首元素进行操作,因此常用于解决“后进先出”类型的问题。

栈的实现可以根据上述黑体字对表的实现进行改写得到,因此不再多做描述。

#队列:

队列也是一种特殊的表,不同的是它允许对队首和队尾两个元素进行操作,它常用于解决“先进先出”的问题。

队列的实现亦不复杂,请读者自行脑补!


P.S. :其实栈和队列是数据结构中相当重要的一部分,不过我之前打的稿子没保存,所以丢掉了,又懒得重新打。。。。。。

另一方面,关于栈和队列,介绍的博客并不在少,还请各位看官出门右拐,自行百度好了。

最后,c++的STL库中其实包含了队列和栈的实现,可以极其方便的调用,因此我们大都不直接写出来,本章的意义,也只在于引导大家去理解这两种数据结构,真正用的时候,还是STL来的方便啊!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值