C++数据结构 栈和队列的实现和应用 60
选用一种存储结构建立栈、队列编写一个程序,读入以升序排列的一系列整数,然后以降序打印出这些整数。一旦读到的整数不大于前面的数,则输入终止,然后将这些整数以降序打印输出。...
选用一种存储结构建立栈、队列
编写一个程序,读入以升序排列的一系列整数,然后以降序打印出这些整数。一旦读到的整数不大于前面的数,则输入终止,然后将这些整数以降序打印输出。 展开
编写一个程序,读入以升序排列的一系列整数,然后以降序打印出这些整数。一旦读到的整数不大于前面的数,则输入终止,然后将这些整数以降序打印输出。 展开
展开全部
在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
没什么好说的,你可以清楚的看到,在单链表的基础上,栈和队列的实现是如此的简单。
栈的定义和实现
#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
没什么好说的,你可以清楚的看到,在单链表的基础上,栈和队列的实现是如此的简单。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询