C++数据结构 栈和队列的实现和应用 60

选用一种存储结构建立栈、队列编写一个程序,读入以升序排列的一系列整数,然后以降序打印出这些整数。一旦读到的整数不大于前面的数,则输入终止,然后将这些整数以降序打印输出。... 选用一种存储结构建立栈、队列
编写一个程序,读入以升序排列的一系列整数,然后以降序打印出这些整数。一旦读到的整数不大于前面的数,则输入终止,然后将这些整数以降序打印输出。
展开
 我来答
百度网友79d5913
2016-11-29 · TA获得超过2245个赞
知道大有可为答主
回答量:1325
采纳率:83%
帮助的人:269万
展开全部
在C++数据结构学习中,顺序表示的栈和队列,必须预先分配空间,并且空间大小受限,使用起来限制比较多。而且,由于限定存取位置,顺序表示的随机存取的优点就没有了,所以,链式结构应该是首选。

栈的定义和实现

#ifndef Stack_H
#define Stack_H
#include "List.h"

template <class Type> class Stack : List//栈类定义
{
 public:
void Push(Type value)
{
 Insert(value);
}

 Type Pop()
 {
Type p = *GetNext();
RemoveAfter();
return p;
 }

 Type GetTop()
 {
return *GetNext();
 }

 List ::MakeEmpty;
 List ::IsEmpty;

};

#endif
队列的定义和实现

#ifndef Queue_H
#define Queue_H
#include "List.h"

template <class Type> class Queue : List//队列定义
{
 public:
void EnQueue(const Type &value)
{
 LastInsert(value);
}

 Type DeQueue()
 {
Type p = *GetNext();
RemoveAfter();
IsEmpty();
return p;
 }

 Type GetFront()
 {
return *GetNext();
 }

 List ::MakeEmpty;
 List ::IsEmpty;

};
#endif
测试程序

#ifndef StackTest_H
#define StackTest_H
#include "Stack.h"

void StackTest_int()
{
 cout << endl << "整型栈测试" << endl;
 cout << endl << "构造一个空栈" << endl;
 Stack<int> a;
 cout << "将1~20入栈,然后再出栈" << endl;
 for (int i = 1; i <= 20; i++) a.Push(i);
while (!a.IsEmpty()) cout << a.Pop() << ' ';
cout << endl;
}
#endif

#ifndef QueueTest_H
#define QueueTest_H
#include "Queue.h"

void QueueTest_int()
{
 cout << endl << "整型队列测试" << endl;
 cout << endl << "构造一个空队列" << endl;
 Queue<int> a;
 cout << "将1~20入队,然后再出队" << endl;
 for (int i = 1; i <= 20; i++) a.EnQueue(i);
 while (!a.IsEmpty()) cout << a.DeQueue() << ' ';
 cout << endl;
}
#endif
没什么好说的,你可以清楚的看到,在单链表的基础上,栈和队列的实现是如此的简单。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式