栈和队列
栈和队列是操作受限的线性表,好像每本讲数据结构的数都是这么说的。有些书按照这个思路给出了定义和实现;但是很遗憾,这本书没有这样做,所以,原书中的做法是重复建设,这或许可以用不是一个人写的这样的理由来开脱。
顺序表示的栈和队列,必须预先分配空间,并且空间大小受限,使用起来限制比较多。而且,由于限定存取位置,顺序表示的随机存取的优点就没有了,所以,链式结构应该是首选。
栈的定义和实现
#ifndefstack_h
#definestack_h
#include"list.h"
templateclassstack:list//栈类定义
typepop
typegettop
list::makeempty;
list::isempty;
};
#endif
队列的定义和实现
#ifndefqueue_h
#definequeue_h
#include"list.h"
templateclassqueue:list//队列定义
typedequeue
typegetfront
{
returngetnext;
}
list::makeempty;
list::isempty;
};
#endif
测试程序
#ifndefstacktest_h
#definestacktest_h
#include"stack.h"
voidstacktest_int
#endif
#ifndefqueuetest_h
#definequeuetest_h
#include"queue.h"
voidqueuetest_int
#endif
【后记】没什么好说的,你可以清楚的看到,在单链表的基础上,栈和队列的实现是如此的简单,这也是我对于原书重复建设不满的最大原因。
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|