您的位置:首页 > 其它

对链式队列结构实现的探讨

2015-11-29 20:57 239 查看
一个数据的结构就像数据的骨架,好的数据结构不仅仅可以节省空间,还可以为程序的实现提供最大的便利,由于助教的原因,让我又有一次机会去认识那些曾经熟悉但是未必真正懂的数据结构。

以前,可能更多的只是去接受,书上这样写,所以我就这样接受,这次重新接触,心中却有点抵触,为什么要这样实现,其他方法没有更加方便吗?

队列的链式结果,熟悉严蔚敏书籍的同学应该都会看到这样的结构描述

typedef struct QNode{//创建队成员

int data;//数据成员

struct QNode *next;

}QNode,*QueuePtr;

typedef struct{//队头队尾指针

QueuePtr front;

QueuePtr rear;

}LinkQueue;

刚刚开始,只是接受,直到现在我才缓过神来,其实这样书写才是最简便的。为什么?

typedef struct QNode{

int data;

struct QNode *next;

struct QNode *front;

struct QNode *rear;

}QNodes,*QueuePtr;

看我的偷懒的实现,刚开始觉得这样写就很简便啊,但是直到添加元素的时候,发现元素其实不需要front和rear指针,这样无形中会浪费很多的数据空间,每次在添加元素的时候,元素都带着两个无用的指针,在说说对于队头和队尾来说,也是种累赘,对于队头和队尾,它不需要去存储真实的数据元素,也不需要指向下一个元素的指针,所以这种实现无时不刻都在浪费我们的存储空间。

对于队头和队尾指针,我们只是利用他们来指向队头和队尾元素,其他没有任何意义,所以严蔚敏书籍中的实现是有一定意义的,为节省数据空间做了最大化的努力。所以在设计数据结构时候,应该想清楚为什么要这样设计,每一个数据元素的设计是否都可以充分利用数据空间,是否会造成浪费,如果这些问题都不存在,那说明我们设计的数据结构确实实用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: